2012-09-01 39 views

回答

10

他們需要移動的原因是,循環不一定循環節點的完整列表。

例如,假設我們有4個節點A-> B-> C-> D->乙

如果我們保持一個指針指向A,我們從來沒有檢測週期。

+0

輝煌,謝謝! :) –

4

的原因是,需要增加其後面的指針(上升更慢),把它弄出來的任何分支脫落的週期。

例如,邊A => B,B => C,C => A,D => B,E => D。

假設兩個指針都從E開始。那麼如果你不改變一個指針,去E => d => B => C => A => B => C => ...,並且永遠不會E.

當別人說你不會得到相同的算法的複雜性,他們意味着你將不得不嘗試從每個頂點開始(這是較慢的)。使用快/慢指針方法,您只需嘗試從圖ONCE的每個「組件」開始。一個組件是所有相互連接的頂點。分離的組件意味着頂點不通過邊緣連接。

通過增加緩慢指針,它也將進入A => B =>碳循環。

而且它絕不會錯過,因爲在指針的變化有效差只有1即。如果快速指針趕上慢速指針,它們之間的距離每次迭代只會改變1。所以,最終的距離將達到0.1

+0

太棒了謝謝你! –

相關問題