142. Linked List Cycle II

Posted 我的名字叫周周

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了142. Linked List Cycle II相关的知识,希望对你有一定的参考价值。

    /*
     * 142. Linked List Cycle II 
     * 11.28 by Mingyang
     * 这个题目一开始自己做的时候把方法搞错了,这个是先快慢相遇,相遇后快的移动到head
     * 慢的快的一步一步走,直到相遇就是我们最终的点
     */
    public static ListNode detectCycle(ListNode head) {
        ListNode slow = head;
        ListNode fast = head;
        while (true) {
            if (fast == null || fast.next == null) {
                return null; // 遇到null了,说明不存在环
            }
            slow = slow.next;
            fast = fast.next.next;
            if (fast == slow) {
                break; // 第一次相遇在Z点
            }
        }
        slow = head; // slow从头开始走,
        while (slow != fast) { // 二者相遇在Y点,则退出
            slow = slow.next;
            fast = fast.next;
        }
        return slow;
    }

 

以上是关于142. Linked List Cycle II的主要内容,如果未能解决你的问题,请参考以下文章

142. Linked List Cycle II

142. Linked List Cycle II

LeetCode141 Linked List Cycle. LeetCode142 Linked List Cycle II

142. Linked List Cycle II

142. Linked List Cycle II

142. Linked List Cycle II