题目描述:
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
思路:
判断有无环:两个指针p1, p2,p1走一步p2走两步,如果相遇就说明有环,否则无环
寻找环位置,p1返回为头节点,每次p1走一步,p2走一步,相遇处为环入口
代码:
class Solution:
def EntryNodeOfLoop(self, pHead):
# write code here
if not pHead:
return None
p1 = pHead
p2 = pHead
while p2:
p1 = p1.next
p2 = p2.next
if p2:
p2 = p2.next
else:
return None
if p2 and p1.val == p2.val:
break
if not p2:
return None
else:
p1 = pHead
while p1.val != p2.val:
p1 = p1.next
p2 = p2.next
return p2