環形鍊錶II(快慢指標)

2021-10-03 10:49:16 字數 1411 閱讀 9943

題目:

題解:假設該表是環形鍊錶,鏈式部分長度為a

aa,環形部分長度為b

bb。定義快指標fas

tfast

fast

和慢指標slo

wslow

slow

,先讓fas

tfast

fast

每次走兩步,slo

wslow

slow

每次走一步,直到兩者相遇;接著讓fas

tfast

fast

重置回頭結點,fas

tfast

fast

和s lo

wslow

slow

都每次走一步,可以證明fas

tfast

fast

走a

aa步後剛好和slo

wslow

slow

相遇。假設第一次slo

wslow

slow

走了( a+

k)

(a+k)

(a+k

)步,那麼fas

tfast

fast

走了( a∗

2+k∗

2)

(a*2+k*2)

(a∗2+k

∗2)步,且有(a+

2∗k)

%b==

k%

b(a+2*k)\%b==k\%b

(a+2∗k

)%b=

=k%b

;接著fas

tfast

fast

從頭開始,走a

aa步後,剛進入環形圈,要證明slo

wslow

slow

也剛好走到環形圈起點,即證(a+

k)%b

==

0(a+k)\%b==0

(a+k)%

b==0

。在式子(a+

2∗k)

%b==

k%

b(a+2*k)\%b==k\%b

(a+2∗k

)%b=

=k%b

兩邊減去k

kk,得證。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

while

(fast != slow)

; fast = head;

while

(fast != slow)

return slow;}}

;

環形鍊錶II 快慢指標

參考於 注意要用距離 幾何來理解這道題 使用快慢指標 definition for singly linked list.class listnode def init self,x self.val x self.next none class solution def detectcycle s...

460 快慢指標解環形鍊錶 II

給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。如果鍊錶無環,則返回 null。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。注意,pos 僅僅是用於標識環的情況,並不會作為引數傳遞到函式中。說明 不允許修改給定...

環形鍊錶(快慢指標法)

給定乙個鍊錶,判斷鍊錶中是否有環。如果鍊錶中有某個節點,可以通過連續跟蹤 next 指標再次到達,則鍊錶中存在環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。注意 pos 不作為引數進行傳遞,僅僅是為了標識...