題目描述
給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。
1,設乙個快指標fast每次走兩個節點和乙個慢指標slow每次走乙個節點,如果鍊錶中存在環,則快指標和滿指標一定會相遇
2,設頭節點距環入口的距離為a,環入口距快慢指標相遇節點的距離為b,快慢指標相遇節點距環入口的距離為c
3,當快慢指標第一次相遇是,慢指標走的距離為a+b,則快指標走的距離為2(a+b),快指標比滿指標多走c+b距離
4,根據以上推算可得:a+b+c+b = 2(a+b),解得:a=c
5,再設乙個慢指標slow2從頭節點出發,原來的slow指標從快慢指標相遇的結點出發,slow2到環入口需要走a距離,slow到環入口需要走c距離,根據4中推算,a=c,則slow2和slow一定在環入口相遇,此時的節點便是環入口
class
solution
return slow;}}
return
null;}
};
鍊錶中環的入口結點
乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。class listnode public class solution return p1 return null 分析 假設鍊錶的起始點到環的入口點節點數為k,環的的節點數為x,讓p2的速度是p1的兩倍,p1和p2相遇在環的第y各節點,可以得到如下等...
鍊錶中環的入口結點
題目要求 乙個鍊錶中包含環,請找出該鍊錶的環的入口結點 分析 1 一種比較偷懶的方法就是遍歷鍊錶,並直接利用hashmap來儲存已經遍歷過的結點。一旦發現已經儲存過的結點,那麼該結點就是環的入口結點。2 參考自 我簡單畫了乙個圖 上傳之後一直是橫過來的。不知道為什麼轉不正 設定兩個指標p1和p2,乙...
鍊錶中環的入口結點
題目描述 乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。思路1 設環中結點數是n,環的入口位置是x 距離起點走多少步 用快慢指標p,q,q移動的速度是p的2倍,當兩個指標相遇時p走的步數是y,q走的步數是2y,q比p多走k個環的距離,即 2y y kn,則y kn。p距離環的入口點的距離為y x,此...