鍊錶 鍊錶中環的入口結點(不一定有環)

2022-09-13 08:39:11 字數 598 閱讀 2548

題目:

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。

解答:

設定快慢指標,都從煉表頭出發,快指標每次走兩步,慢指標一次走一步,假如有環,一定相遇於環中某點(結論1)。接著讓兩個指標分別從相遇點和煉表頭出發,兩者都改為每次走一步,最終相遇於環入口(結論2)。以下是兩個結論證明:

1、設定快慢指標,假如有環,他們最後一定相遇。

2、兩個指標分別從煉表頭和相遇點繼續出發,每次走一步,最後一定相遇與環入口。

3

4class

solution

15if(!fast||!fast->next)return

null;

16 low=phead;//

low從煉表頭出發

17while(fast!=low)

21return

low;22}

23 };

鍊錶 鍊錶中環的入口結點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。知識點回顧 快慢指標 思路 使用快慢指標 假設有p,q兩指標,p每步跨乙個結點,q每步跨兩個結點。那麼經過k步之後q比p多走過的結點數為k。如果鍊錶中沒有環,那麼q永遠在p的前面,兩指標不會相遇。如果鍊錶有環,且環中結點個數為...

鍊錶 鍊錶中環的入口結點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null 鍊錶中某些結點構成了乙個環,找打環的入口結點 head a1 a2 a3.使用雙層迴圈,例如對於結點a1,遍歷整個鍊錶判斷是否有a1 head next head head next a2,a3,an 依次 測試報錯,沒通過 ...

鍊錶中環的入口結點

乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。class listnode public class solution return p1 return null 分析 假設鍊錶的起始點到環的入口點節點數為k,環的的節點數為x,讓p2的速度是p1的兩倍,p1和p2相遇在環的第y各節點,可以得到如下等...