判斷入環點

2021-10-08 01:25:54 字數 781 閱讀 3062

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回 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指標一次移動 乙...