题目:
一个链表中包含环,请找出该链表的环的入口结点。
思路:
//先说个定理:两个指针一个fast、一个slow同时从一个链表的头部出发//fast一次走2步,slow一次走一步,如果该链表有环,两个指针必然在环内相遇//此时只需要把其中的一个指针重新指向链表头部,另一个不变(还在环内),//这次两个指针一次走一步,相遇的地方就是入口节点。python solution:
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def EntryNodeOfLoop(self, pHead):
pFast = pHead
pSlow = pHead
while pFast != None and pFast.next != None:
pFast = pFast.next.next
pSlow = pSlow.next
if pFast == pSlow:
break
if pFast == None or pFast.next == None:
return None
pFast = pHead
while (pFast != pSlow):
pFast = pFast.next
pSlow = pSlow.next
return pFast
# write code here
本文介绍了一种高效查找链表中环入口节点的方法。利用快慢指针原理,通过两次移动指针来定位环的起始位置。首次相遇后将一指针移回链表头,两指针同步前进直至再次相遇即为入口节点。

被折叠的 条评论
为什么被折叠?



