鏈表有環找入口的問題

之前遇到過這個問題,記得方法是先分別用兩個快、慢指針,讓他們在環中相遇,然後一個從頭結點,一個從相遇點,都一次走一步,相遇點即爲入口點。
但是關於這個結論的證明,看了網上好幾個博客,感覺都說的不夠清晰,印象中有一篇講得還不錯,還算理解了它的思想,今天做題時想要去搜結果搜不到了。
這裏寫下我自己的一點理解:
這裏寫圖片描述
其中p點爲快慢指針的相遇點。
下面要證明的問題是,一個指針從p點開始,另一個指針從head開始,一定會在q點(入口點相遇)。

首先根據p是快慢指針的相遇點:
2(l1+s)=l1+s+kl2 ,其中k=1,2,3,...
移項得:l1=(k1)l2+l2s
其物理含義就是說從head開始到入口點的距離,和從p 點開始在環上走n(n=0,1,2,...) 圈再加上p到入口點的距離相等。
其證明就是這麼簡潔,其實就是數學等式的一個簡單變形,然後用物理解釋其含義。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章