一,題目描述
給定乙個鍊錶,返回鍊錶開始入環的第乙個節點。 如果鍊錶無環,則返回 null
示例:
輸入:head = [3,2,0,-4], pos = 1 輸出:tail connects to node index 1解釋:鍊錶中有乙個環,其尾部連線到第二個節點。
二,解決思路1,使用快慢指標判斷是否帶環,如果帶環即找到了快慢指標的交點,如果不帶換直接返回null即可
2,帶環的情況, 設定兩個引用, 分別從鍊錶頭部和fast slow交點出發, 按照相同的速度同步往後走,相遇的位置即為入環的第乙個節點
三,**實現
public listnode detectcycle
(listnode head)}if
(fast == null || fast.next == null)
// 帶環的情況, 設定兩個引用, 分別從鍊錶頭部和fast slow交點出發, 按照相同的速度同步往後走
listnode cur1 = head;
listnode cur2 = fast;
while
(cur1 != cur2)
// 這個位置就是環的入口
return cur1;
}
給定乙個鍊錶,返回鍊錶開始入環的第乙個節點
分析 a 鍊錶的頭節點 b 鍊錶開始入環的第乙個節點 c fast 和 slow 相遇的點 如下圖,我們設ab x,bc l,因為,fast 的速度是 slow 的二倍,所以我們可以得到等式 2 x l x l nc,化簡可得 x nc l,由於 n 是 fast 走了n 圈和slow 相遇,c表示...
LeetCode 返回鍊錶入環的第乙個節點
leetcode142 題目描述 給定乙個鍊錶,返回鍊錶開始入環的第乙個節點.如果鍊錶無環,則返回null.為了表示給定鍊錶中的環,我們使用整形pos來 表示鍊錶尾連線到鍊錶中的位置 索引從0開始 如果pos是 1,則在該鏈 表中沒有環.注意,pos僅僅是用於標識環的情況,並不會作為引數傳遞到函式中...
鍊錶中是否有環 返回鍊錶開始入環的第乙個節點
1 給定乙個鍊錶,判斷鍊錶中是否有環 我們可以用快慢指標的方法解決這個問題。fast指標一次走2步,slow指標一次走1步,則當兩個指標走一次時兩個指標相差1步,走兩次時相差2步,以此類推當走n次時fast指標與slow指標相差n步,每多走一次兩個指標之間相差步數加1。若slow走n步入環,則此時f...