value 陣列 209 長度最小的子陣列

2021-10-11 04:17:41 字數 803 閱讀 4549

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

示例:

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

輸出:2

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

很直觀想到的就是滑動視窗,用乙個變長的框框來不斷縮小區間範圍,但是!暴力解法竟然也過了。字首和+二分查詢的思路其實也沒啥難的,就是再建立乙個字首和陣列,每次尋找字首和大於s的區間,遍歷整個字首和陣列,找到最小的區間即可

具體**如下:

class solution }}

return result == integer.max_value ? 0 : result;}}

本題提示在o(n)內執行,要麼是兩個指標從頭尾開始向中間縮,要麼就是滑動視窗,顯然本題用滑動視窗更加合適,建立兩個指標,乙個指標不斷後移,讓該區間所有數字和大於s,此時另乙個指標從頭向後移,找到讓區間所有數字和第一次小於s的區間,此即為乙個滿足條件區間,遍歷整個陣列,找到最小的區間即可

具體**如下:

class solution 

//找到小於s的區間

while (i < j && window >= s)

}return result == integer.max_value ? 0 : result;}}

209 長度最小的子陣列

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

209 長度最小的子陣列

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

209 長度最小的子陣列

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