演算法 雙索引技術(滑動視窗) 長度最小的子陣列

2021-10-04 23:08:14 字數 701 閱讀 3496

常用在需要使用滑動視窗的演算法題上面

滑動視窗主要用來尋找子串

演算法舉例:

209. 長度最小的子陣列

// 給定乙個含有n個正整數的陣列和乙個正整數s 

// 找出該陣列中滿足其和 ≥ s 的長度最小的連續子陣列

// 如果不存在符合條件的連續子陣列,返回 0。

// 示例: 輸入: s = 7, nums = [2,3,1,2,4,3]

// 輸出: 2

// 解釋: 子陣列 [4,3] 是該條件下的長度最小的連續子陣列

// 雙索引技術:滑動視窗

// 在陣列最左側設定兩個索引,判定其中的乙個字串,

// 如果當前子串的和 > s 那麼將左邊的索引 -1

// 如果當前子串的和 < s 那麼將右邊的索引 +1

public class minsubarraylen ;

system.out.println(minsubarraylen(s, nums));

}private static int minsubarraylen(int s, int nums) else

if (sum >= s)

}if (arraylen == nums.length + 1)

return arraylen;

}}

滑動視窗求解長度最小子陣列

給定乙個含有 n 個正整數的陣列和乙個正整數 target 找出該陣列中滿足其和 target 的長度最小的 連續子陣列 numsl,numsl 1,numsr 1,numsr 並返回其長度。如果不存在符合條件的子陣列,返回 0 思路 採用滑動視窗的思想,起始位置視窗的大小為1,視窗的起點和終點都在...

滑動視窗 長度最小的子陣列

滑動視窗 長度最小的子陣列 暴力法 區間由left,和right確定,因此需要兩層for迴圈遍歷left和right,o n 2 滑動視窗法 滑動視窗也是使用雙指標確定視窗的left和right,left和right如何移動?right要從0 到length 1移動,步長1,也就是用for迴圈,le...

探索陣列和字串 長度最小的子陣列(滑動視窗)

給定乙個含有 n 個正整數的陣列和乙個正整數 s 找出該陣列中滿足其和 s 的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例 輸入 s 7,nums 2,3,1,2,4,3 輸出 2 解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。高階 如果你已經完成了o n 時間複雜...