leetcode 142. Linked List Cycle II

来源:互联网 发布:淘宝如何转接人工客服 编辑:程序博客网 时间:2024/06/01 08:46

题目:Given a linked list, return the node where the cycle begins. If there is no cycle, return null.

给定一个链表,返回链表中环的第一个节点。


思路:


p1为环开始的节点,p2为fast指针和slow指针相遇的节点。A 、B、 C分别为三段的距离。当相遇的时候slow指针经过的路程为(A + B)而fast指针经过的路程为(A + B + C + B)。同时fast经过的路程又是slow的两倍,所以又(A + B + C + B)= 2(A + B)所以最后得到A = C!那么当两者相遇的时候,只需要将slow指针放回到起始节点,而fast指针继续在原有位置上向前走。两个指针一相同的速度访问节点。当两者再次相遇的时候,相遇的节点就是环路起始节点p1。


代码AC:


0 0
原创粉丝点击