劍指offer 55 鍊錶中環的入口結點

2021-10-10 17:21:40 字數 738 閱讀 2212

這是一道比較經典的快慢指標的問題,fast和slow都從頭出發,他們第一次相遇時,

fast剛好走了兩倍slow的距離。如果此時有兩個指標分別從頭和相遇點出發,每次移動一步,當他們的相遇節點正好是環的入口。

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class

solution

:def

entrynodeofloop

(self, phead)

:# write code here

fast = phead

slow = phead

while fast and fast.

next

: fast = fast.

next

.next

slow = slow.

next

if fast == slow:

slow2 = phead

while slow2!=slow:

slow2 = slow2.

next

slow = slow.

next

return slow2

return

none

劍指offer 55 鍊錶中環的入口結點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。找環的入口這個問題,其實是建立在另外乙個問題之上的 判斷單向鍊錶是否有環 土方法很多,但是比較好的目前就那麼乙個 一開始設定兩個指標都指向表頭,其中乙個每次 一步 前進乙個節點的叫p1,另外那個每次 一步 前進兩個節點的叫p2...

劍指offer55 鍊錶中環的入口結點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。設定塊 慢指標,快指標沒次走兩步,慢指標每次走一步,如果有環,它們一定會相遇 否則快指標會先到最後。相遇後選乙個指標在頭結點,然後與慢指標同時移動,相遇位置就為環入口 走一步和兩步 while slow fast if fas...

劍指offer 55 鍊錶中環的入口結點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。時間限制 1秒 空間限制 32768k 熱度指數 144136 本題知識點 鍊錶 見 struct listnode class solution while slow fast 2.計算環內長度 int l 0 dowhil...