鍊錶 尋找鍊錶中環的起點

2021-09-12 12:43:23 字數 715 閱讀 9113

給定乙個單鏈表,若該鍊錶有環,返回環的起點,若沒有,返回null

基本思路:

每遇到乙個節點,計數器++ ,當遇到訪問次數為2時,返回該節點,否則在迴圈結束前還沒有找到,則返回null

class solution 

return null;}};

高階思路:雙指標思路,證明:

慢指標速度為v  那麼快指標速度為2v  第一次相遇,快指標先走了一圈

2式子相減,得出l1=l3      那麼將快指標放到起點開始每次移動1步,下次相遇一定發生在環起點位置

class solution 

}if(point==null)//說明迴圈結束 還沒有相交,也就是沒有環

return null;

fast=phead;//將快指標設為頭部,速度和slow一致,相遇處即為環起點

while(fast!=slow)

return fast;}};

(2)尋找鍊錶中環的位置

演算法 1 中,我們已經知道如何判斷乙個鍊錶中是否有環了,那麼怎麼找到環的位置呢?英文命題 given alinked list,return thenode where thecycle begins if there is no cycle,return null.follow up can y...

鍊錶 鍊錶中環的入口結點

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出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 依次 測試報錯,沒通過 ...