判斷乙個鍊錶中環的入口位置

2021-08-27 18:40:04 字數 507 閱讀 1489

乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。

思路:

通過141題,我們知道可以通過快慢指標來判斷是否有環,現在我們假設兩個指標相遇在z點,如圖

那麼我們可以知道fast指標走過a+b+c+b

slow指標走過a+b

那麼2*(a+b) = a+b+c+b

所以a = c

那麼此時讓slow回到起點,fast依然停在z,兩個同時開始走,一次走一步

那麼它們最終會相遇在y點,正是環的起始點

**:public class listnode

}public class solution else

}for(slow=phead;slow!=fast;slow=slow.next,fast=fast.next);

return slow;  }}

乙個鍊錶中環的入口

乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。思路 第一步,找環中相匯點。分別用slow,fast指向鍊錶頭部,slow每次走一步,fast每次走二步,直到slow fast找到在環中的相匯點。第二步,找環的入口。接上步,當slow fast時,fast所經過節點數為2x,slow所經過節點數為x,...

鍊錶中環的入口

題目描述 給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。思路 之前我們判斷鍊錶是否有環,用兩個指標,快慢指標,乙個走一步,乙個走兩步,在此基礎上,當兩個指標相遇,此時肯定在環中,那麼接著計算環的節點數,就利用相遇節點往前走,直到在次回到相遇點,即可計算環的節點數n,然後利...

鍊錶 鍊錶中環的入口結點

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