给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
思路:
设两个指针:
两个指针速度不同往前走,若相等有环,跳出循环;
其中一个指针回到原点,两指针同样速度往前走,再次相遇时,回到原点的那个指针指向的位置就是环入口。
def EntryNodeOfLoop(self, pHead):
# write code here
if pHead=='' and pHead.next=='':
return None
p1=pHead
p2=pHead
while(p2 and p2.next):
p1=p1.next
p2=p2.next.next
if p1==p2:
break
if not p2 or not p2.next:
return None
p2=pHead
while p2!=p1:
p2=p2.next
p1=p1.next
return p2