先判斷是否有環,然後再找環內第乙個節點。
解題思路:分兩個步驟,首先通過快慢指標的方法判斷鍊錶是否有環;接下來如果有環,則尋找入環的第乙個節點。具體的方法為,首先假定鍊錶起點到入環的第乙個節點a的長度為a【未知】,到快慢指標相遇的節點b的長度為(a + b)【這個長度是已知的】。現在我們想知道a的值,注意到快指標p2始終是慢指標p走過長度的2倍,所以慢指標p從b繼續走(a + b)又能回到b點,如果只走a個長度就能回到節點a。但是a的值是不知道的,解決思路是曲線救國,注意到起點到a的長度是a,那麼可以用乙個從起點開始的新指標q和從節點b開始的慢指標p同步走,相遇的地方必然是入環的第乙個節點a。
借鑑了該使用者的思路
public
class
solution}if
(hascycle)
return q1;
}return null;
}}
LeetCode 環形鍊錶
given a linked list,determine if it has a cycle in it.to represent a cycle in the given linked list,we use an integer pos which represents the positio...
LeetCode環形鍊錶
兩種思路 第一 想到判讀重複問題,hash表是很好的結構,可以使用hashset儲存元素,可以判斷是否出現過,空間複雜度o n 時間複雜度o n 第二 雙指標,追及問題,乙個快乙個慢,若存在環,快的指標必定會追上慢的指標 空間複雜度o n 時間複雜度o 1 利用雜湊表的特性。tips 雜湊表是判斷重...
LeetCode 環形鍊錶
題目描述 給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示...