快慢指標問題

2021-08-08 12:49:17 字數 306 閱讀 1514

快慢指標可以用來檢測鍊錶是否有環,問題是為什麼快指標一定會追上慢指標呢?

從數學的角度,當快指標步長為2時,慢指標走完一圈,此時快指標走完2圈,必定在第乙個節點相遇

以此類推,當快指標步長為n時,慢指標走完一圈,此時快指標走完n圈,必定會在第乙個節點相遇,但是初次遇見未必是在第乙個節點

有意思的是從物理角度,當兩個物體速度不同時,將其中慢指標看為靜止,由於起始位置相同,就相當於快指標第二次到達起始位置的時候相遇,注必須是起始位置相同,不然快指標在奇偶數不同的情況下,可能每次會直接跳躍一些位置,造成不能相遇

因此,快指標一定會與慢指標相遇

快慢指標相遇問題

為什麼用快慢指標找鍊錶的環,快指標和慢指標一定會相遇,並且相遇時必然只繞了一圈?這個問題你可以用數學歸納法來思考。首先,由於鍊錶是個環,所以相遇的過程可以看作是快指標從後邊追趕慢指標的過程。那麼做如下思考 1 快指標與慢指標之間差一步。此時繼續往後走,慢指標前進一步,快指標前進兩步,兩者相遇。2 快...

快慢指標 雙指標

雙指標 二 左右指標的常用演算法 鏈結 利用快慢指標 最開始slow與fast指標都指向鍊錶第乙個節點,前者解決主要解決鍊錶中的問題,listnode detectcycle listnode head slow head while slow fast return slow 設相遇點距環的起點的...

LeetCode 鍊錶 快慢指標問題

前言 這是關於leetcode上關於雙指標問題的乙個小結 1.環形鍊錶 141.給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos...