golang 雙指標滑動區間

2021-10-24 06:20:42 字數 1080 閱讀 2266

雙指標通常在滑動區間演算法中使用,與kmp盡可能的復用已計算的資訊思想一致。

給定乙個二進位制陣列, 計算其中最大連續1的個數。輸入陣列的長度是正整數,且不超過 10,000。

輸入:[1

,1,0

,1,1

,1]輸出:

3解釋: 開頭的兩位和最後的三位都是連續1,所以最大連續1的個數是 3.

func

findmaxconsecutiveones

(nums [

]int

)int

else

}return rs

}

計算連續數個數 ,知道連續首ji索引,i-j+1即為其個數

假定當前索引為非連續子索引,則動態的將首索引指向 i+1,即可確定當前,不可確定下乙個,則進行下乙個判斷

給定乙個含有 n 個正整數的陣列和乙個正整數 s ,找出該陣列中滿足其和 ≥ s 的長度最小的 連續 子陣列,並返回其長度。如果不存在符合條件的子陣列,返回 0。

輸入:s =

7, nums =[2

,3,1

,2,4

,3]輸出:2

解釋:子陣列 [4,

3] 是該條件下的長度最小的子陣列。

func

minsubarraylen

(s int

, nums [

]int

)int

left,right,sum,sublen :=0,

0,0,math.maxint64

for right <

len(nums)

right++

}if sublen== math.maxint64

return sublen

}

雙指標到滑動視窗

1 判定鍊錶中是否含有環 解析 定義兩個指標,一快一慢。如果有環,則會相遇。boolean hascycle listnode head return false 2 已知鍊錶中含有環,返回這個環的起始位置 解析 快指標走了2k步,慢指標走了k步。多的k步就是環的長度。假設相遇點距離環起始位置m步,...

雙指標之滑動視窗總結

這個星期做的都是有關雙指標和滑動視窗的有關leecode題。同樣有點小感悟,這裡小小總結一下雙指標中的滑動視窗部分。對於給定字串求其某個符合一定條件的子串的問題,最簡單的方法就是暴力的兩層迴圈,它的時間複雜度至少是o n2 一般條件下,這樣的複雜的往往都會因為超時而 over 相對來說,如果能對暴力...

雙指標問題和滑動視窗問題

好幾天沒寫啦,不過這段時間一直都在做題,沒有一天拉下,這幾天寫了不少雙指標問題,動態規劃問題也在慢慢地熟練了,看資料,找規律,找前一 秒 的狀態,找出狀態轉換方程。到雙指標問題,我真是2分鐘就把問題怎麼解決想了出來,但是有一道題實現時候,總是答案不對,我也不知道為什麼,後來才發現,我只是大致的把指標...