分析:
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表示環的長度,我們可以得到 nc值是恆定的,n 越大,c越小,
所以 nc - l的值恆定,即cb = x,具體**的實現如下:
鍊錶中是否有環 返回鍊錶開始入環的第乙個節點
1 給定乙個鍊錶,判斷鍊錶中是否有環 我們可以用快慢指標的方法解決這個問題。fast指標一次走2步,slow指標一次走1步,則當兩個指標走一次時兩個指標相差1步,走兩次時相差2步,以此類推當走n次時fast指標與slow指標相差n步,每多走一次兩個指標之間相差步數加1。若slow走n步入環,則此時f...
環形鍊錶(給定乙個鍊錶,判斷鍊錶中是否有環。)
給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示例 2 輸...
給定乙個鍊錶,判斷鍊錶中是否有環
給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個節點。示例 2 輸...