給定乙個鍊錶,返回鍊錶開始入環的第乙個節點

2021-09-29 21:36:10 字數 732 閱讀 3623

分析:

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 輸...