【链表】lc141.判断链表是否有环

原题链接

思路

  • 快慢双指针

参考代码(Java)

  • 141
public boolean hasCycle(ListNode head) {
    ListNode fast = head;
    ListNode slow = head;
    while(fast!=null && fast.next!=null){
        fast = fast.next.next;
        slow = slow.next;
        if(fast == slow){
            return true;
        }
    }
    return false;
}
  • 142
public ListNode detectCycle(ListNode head) {
    ListNode fast = head;
    ListNode slow = head;
    while(fast!=null && fast.next!=null){
        fast = fast.next.next;
        slow = slow.next;
        if(fast == slow){
        	// 可以确定有环,然后将快指针指向头结点,等他们再次相交时,交点就是环的入口
            fast = head;
            while(fast!=slow){
                fast = fast.next;
                slow = slow.next;
            }
            return fast;
        }
    }
    return null;
}
上一篇:LeetCode26 删除有序数组中的重复项


下一篇:踢球骨折在家day3