給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回 none.
思路:使用快慢指標,先判斷是否有環,若有慢指標重回起點,各走一步,重合點為入環點.
class
node
:def
__init__
(self,data)
: self.data = data
self.
next
=none
def__repr__
(self)
:return f"node()"
class
solution
:def
detectcircle
(self,head)
: fast = head
slow = head
while fast and fast.
next
isnot
none
: slow = slow.
next
fast = fast.
next
.next
if fast == slow:
slow = head
while slow != fast:
slow = slow.
next
fast = fast.
next
return slow
return
none
如何找出有環鏈表的入環點?
1 head到環入口的距離a過長,導致fast節點很早就進入環中了,a還沒進入環中,此時情況 fast節點走了n圈後,a才開始進入到環中,此時n 1圈 2 head節點開始就是環,或者head到環入口的距離a很短,a進入環中了,b還沒走完一圈,此時n 1圈 從上面的分析知道,當fast和slow相遇...
力扣142 入環點 ,快慢指標
class solution def detectcycle self,head listnode listnode s head 定義s和f在開頭 f head while f and f.next 當f和f的下乙個位置不為空的時候 s s.next s向前走一步 f f.next next f向...
判斷鍊錶是否有環,並找出入環點
題目 設計乙個演算法判斷乙個鍊錶是否有環,並找出入環點 分析 我們可以想象一下,在乙個有環的賽道上,有兩個人跑步,乙個人跑得快,乙個人跑得慢,試想,時間充足的情況下,跑得快 的那個人是不是會再次遇到跑的慢的人呢?所以對於這道題,我們也可以通過快慢指標來處理,p指標一次移動兩個節點,q指標一次移動 乙...