【链表】LeetCode 141. 环形链表

题目链接

141. 环形链表

思路

设置fast指针和slow指针,分别走两步和一步,如果链表有环的话,那么两个指针一定会在某一时刻相遇。

可以想象成速度不同的两个人跑圈,只要时间足够,速度慢的人一定会被速度快的人套圈。

代码

class Solution {
    public boolean hasCycle(ListNode head) {
        if(head == null){
            return false;
        }

        ListNode slow = head;
        ListNode fast = head;

        do{
            slow = slow.next;
            fast = fast.next;
            if(fast != null){
                fast = fast.next;
            }
        }while(slow != null && fast != null && slow != fast);

        return fast != null;
    }
}

拓展练习

【链表】LeetCode 142. 环形链表 II

posted @ 2023-01-03 10:05  Frodo1124  阅读(20)  评论(0编辑  收藏  举报