劍指offer 23,鍊錶中環的入口節點

2021-10-07 14:35:29 字數 1241 閱讀 1582

雙指標法

1,確定乙個鍊錶中包含環

定義兩個指標,同時從鍊錶的頭節點出發,乙個指標每次走一步,另乙個指標每次走兩步;如果快指標追上了慢指標,那麼鍊錶就包含環。

2,得到環中節點數目

兩個指標相遇的節點一定在環中,從這個節點出發,一邊繼續向前移動一邊計數,再次回到這個節點時,就可以得到環中結點的數目。

3,找到環的入口

先定義兩個指標p1,p2指向頭節點。如果鍊錶環中有n個節點,則指標p1先向前移動n步,然後兩個指標以相同的速度向前移動。當第二個指標指向環的入口節點時,第乙個指標已經繞著環走了一圈回到了入口節點。

劍指offer23 鍊錶中環的入口節點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。兩個指標,p1,p2 p1一次走一步,p2一次走兩步。第一次相遇之後開始計數,第二次再相遇時count的值就是環有多少個節點。兩個指標,p1,p2 p1先走count步,然後兩個再同時走,相遇的點就是入口節點。struct l...

劍指offer23 鍊錶中環的入口節點

判斷單鏈表中有沒有環,如果有找到環的入口節點。三個問題 1 如何確定鍊錶中包含環 兩個指標,乙個指標一次走一步,乙個指標一次走兩步。如果走得快的指標追上了走得慢的指標,則說明鍊錶包含環 如果走得快的指標走到了鍊錶末尾 p next null 都沒有追上第乙個指標,則無環。2 如何找到環的入口 定義兩...

劍指offer 23 鍊錶中環的入口節點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出none。思路 1.找相遇點 設定乙個快指標pfast乙個慢指標pslow,先找到乙個相遇點,一定在環中 2.計算環的長度 從相遇點出發,到相遇點結束 1,即為環的長度。3.pfast 從phead 環的長度出發 pslow從phead...