快慢指標相遇問題

2021-10-06 19:57:21 字數 465 閱讀 7864

為什麼用快慢指標找鍊錶的環,快指標和慢指標一定會相遇,並且相遇時必然只繞了一圈?

這個問題你可以用數學歸納法來思考。首先,由於鍊錶是個環,所以相遇的過程可以看作是快指標從後邊追趕慢指標的過程。那麼做如下思考:

1:快指標與慢指標之間差一步。此時繼續往後走,慢指標前進一步,快指標前進兩步,兩者相遇。

2:快指標與慢指標之間差兩步。此時繼續往後走,慢指標前進一步,快指標前進兩步,兩者之間相差一步,轉化為第一種情況。

3:快指標與慢指標之間差n步。此時繼續往後走,慢指標前進一步,快指標前進兩步,兩者之間相差(n+1-2)-> n-1步。

因此,此題得證。所以快指標必然與慢指標相遇。又因為快指標速度是慢指標的兩倍,所以相遇時必然只繞了一圈。

和同學交流新得到乙個思路,從物理相對速度來看。已知,慢指標前進一步,快指標前進兩步。我們把慢指標看作靜止的,則快指標每次走一步。快指標會遍歷圈中所有的點,則第一圈一定和相對靜止的慢指標相遇。

專題 鍊錶雙指標問題(快慢指標 相遇指標)

雙指標 分別指向兩個鍊錶,每個鍊錶各自乙個指標 快慢指標 指向同乙個鍊錶,一前一後,前進速度不同 相遇指標 指向同乙個有環鏈表,一前一後,前進速度不同 面試題22.鍊錶中倒數第k個節點 definition for singly linked list.public class listnode c...

快慢指標問題

快慢指標可以用來檢測鍊錶是否有環,問題是為什麼快指標一定會追上慢指標呢?從數學的角度,當快指標步長為2時,慢指標走完一圈,此時快指標走完2圈,必定在第乙個節點相遇 以此類推,當快指標步長為n時,慢指標走完一圈,此時快指標走完n圈,必定會在第乙個節點相遇,但是初次遇見未必是在第乙個節點 有意思的是從物...

快慢指標慢指標和快指標一定會相遇

慢指標每次移動一格,快指標每次移動兩格,在有環的煉表裡,他們一定會相遇 1 當快指標就在慢指標後面,那麼下一次慢指標移動一位,快指標移動兩位,相遇 2 當快指標和慢指標差乙個位置,那麼下一次慢指標移動一位,快指標移動兩位,他們會變成第一種情況 3 當快指標和慢指標差兩個位置,那麼下一次慢指標移動一位...