乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。
思路:
通過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的前面,兩指標不會相遇。如果鍊錶有環,且環中結點個數為...