【Leetcode】141.环形链表-CSDN博客

50 阅读1分钟

141.环形链表

在这里插入图片描述

思路

定义快慢指针 快指针一次走两步 慢指针一次走一步 如果链表有环则快慢指针一定能在环中相遇(类似追及问题)

快慢指针的间隔为1 否则可能出现每次追击恰好错过的情况导致死循环

代码实现

public class Solution {
    public boolean hasCycle(ListNode head) {
        
        if(head == null){
            return false;
        }
        ListNode fast = head;
        ListNode slow = head;
        //定义快慢指针
        while(fast != null && fast.next != null){
            //条件循环条件不能反
            fast = fast.next.next;
            //快指针一次走两步
            slow = slow.next;
            //慢指针一次走一步
            if(slow == fast){
                return true;
            }
        }
        return false;
    }
}