怎麼找到鍊錶環的入口

2022-09-06 19:36:09 字數 395 閱讀 7836

看了半天 記錄一下

首先   設定乙個快慢指標  快指標  fast  一次走兩步   慢指標  slow  一次走一步

如果鍊錶有環   那麼快慢指標一定會在鍊錶中相遇

相遇時   fast指標 走了 2n 步  , slow 指標走了 n步

設 環的 長度為 c  那麼  n%c  == 0

再設  起點  到 環的距離 為 m  這裡最巧妙

slow指標在環中走過的距離是 n-m

因為 n%c == 0

所以slow指標再前進 m 步 剛好到環的入口

再指標上體現為   快慢指標前進    快慢指標相遇   指標起點為新指標 finder

finder指標 和slow指標 同時前進  知道兩者相遇   這個點就是 環的入口

找到鍊錶環的入口

乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。1 設定一對快慢指標,都從煉表頭出發 快指標每次走兩步,慢指標每次一步 2 找到兩個指標在環上的相遇點 3 設定兩個指標,分別從煉表頭和相遇點出發 4 上面兩個指標相遇的地方即為環入口 快慢指標都從頭開始,這樣可以保證只有環的情況下,快慢指標是在head...

找鍊錶環入口

對於乙個給定的鍊錶,返回環的入口節點,如果沒有環,返回null 拓展 你能給出不利用額外空間的解法麼?核心思路 快慢指標 定義乙個快指標每次走兩步 定義乙個慢指標每次走一步 快慢指標相遇則一定在環內,且方向相反 相遇後慢指標從頭開始走,快指標繼續走每次只走一步,最後快慢指標相遇一定是入口 具體計算參...

鍊錶 若單鏈表存在環,如何找到環的入口點。

演算法 這個完全是通過數學推導出來的,設一快 一慢兩個指標,快指標的步長為2,慢指標為1,假設鍊錶起點到環入口點之間的距離為x,環入口點到重合點的距離為y,假設在相遇之前慢指標走的s,則快指標必然走2s,所以有如下公式 s x y 2s nr s 假設環的周長為r,在相遇前快指標走了n圈 由公式2推...