题目
分析
这是一道比较经典的快慢指针的问题,fast和slow都从头出发,他们第一次相遇时,
fast刚好走了两倍slow的距离。如果此时有两个指针分别从头和相遇点出发,每次移动一步,当他们的相遇节点正好是环的入口。
python代码
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def EntryNodeOfLoop(self, pHead):
# write code here
fast = pHead
slow = pHead
while fast and fast.next:
fast = fast.next.next
slow = slow.next
if fast == slow:
slow2 = pHead
while slow2!=slow:
slow2 = slow2.next
slow = slow.next
return slow2
return None