鍊錶中環的入口節點

2021-07-15 21:24:05 字數 462 閱讀 9337

乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。

思路:

通過141題,我們知道可以通過快慢指標來判斷是否有環,現在我們假設兩個指標相遇在z點,如圖

那麼我們可以知道fast指標走過a+b+c+b

slow指標走過a+b

那麼2*(a+b) = a+b+c+b

所以a = c

那麼此時讓slow回到起點,fast依然停在z,兩個同時開始走,一次走一步

那麼它們最終會相遇在y點,正是環的起始點

class solution  while(fast!=slow);

slow = phead;

while(slow!=fast)

return fast;}};

鍊錶中環的入口節點

題目描述 乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。演算法描述 受之前的面試題的啟發,如果我們在乙個有環的鍊錶中設定兩個鍊錶指標,乙個快,乙個慢,那麼兩個鍊錶指標相遇的時候,必然是位於鍊錶中的某個結點,利用這個結點,當我們從這個結點開始繼續遍歷,當再一次回到這個結點的時候,我們可以統計出環中的結...

鍊錶中環的入口節點

題目描述 乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。解題思路 假設x為環前面的路程 黑色路程 a為環入口到相遇點的路程 藍色路程,假設順時針走 c為環的長度 藍色 橙色路程 第一步 找環中相匯點。分別用p1,p2指向鍊錶頭部,p1每次走一步,p2每次走二步,直到p1 p2找到在環中的相匯點。此時...

鍊錶中環的入口節點

乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。struct listnode class solution listnode slow phead listnode fast phead while count while fast slow return fast listnode hasloop...