题解 | #链表中环的入口结点#
链表中环的入口结点
https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4
#step 1:使用BM6.判断链表中是否有环中的方法判断链表是否有环,并找到相遇的节点。
#step 2:慢指针继续在相遇节点,快指针回到链表头,两个指针同步逐个元素逐个元素开始遍历链表。
#step 3:再次相遇的地方就是环的入口。
class Solution:
def EntryNodeOfLoop(self, pHead):
#定义快慢指针
fast = pHead
slow = pHead
查看是否有环
while fast != None and fast.next != None:
fast = fast.next.next
slow = slow.next
if fast == slow:
# 两指针相遇
fast = pHead
# 让快指针指向头节点
while fast != slow:
fast = fast.next
slow = slow.next
# 走a步(环之前步数)
return fast
return None

查看7道真题和解析