leetcode日記 209 長度最小的子陣列

2021-10-07 13:36:52 字數 963 閱讀 4616

給定乙個含有 n 個正整數的陣列和乙個正整數 s ,找出該陣列中滿足其和 ≥ s

的長度最小的連續子陣列,並返回其長度。如果不存在符合條件的連續子陣列,返回 0。

示例:輸入: s = 7, nums = [2,3,1,2,4,3] 輸出: 2 解釋: 子陣列 [4,3] 是該條件下的長度最小的連續子陣列。

題目中要求「和」、「長度最小的連續子陣列」等關鍵字眼,讓我們想到這是一道可以利用滑動視窗法解決的問題。如果我們儲存乙個陣列sum,前i位取值為陣列的前i位之和(0<=i<=len)。那麼我們就可以在sum陣列上用雙指標滑動視窗的辦法解決問題了。

1.初始兩指標start、end位置均在0處,此時有 sum[0] == 0;

2.end自增直到sum[end] - sum[start] >= s; 判斷是否更新此時的最小陣列長度。

3.start自增直到sum[end] - sum[start] < s;

4.如果end == len 就結束迴圈,否則重新回到第2步。

對於一些邊界情況(n陣列長度為0或者所有數字加起來沒有s大等情況,可能需要單獨討論)。

然後其實還可以上面的基礎上進行空間上的優化——去掉sum陣列,直接用乙個int型的變數來代替。思路和上述類似,具體請看**。

leetcode 209 長度最小的陣列

題目描述 給定乙個含有 n 個正整數的陣列和乙個正整數 s 找出該陣列中滿足其和 s 的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。參考 負雪明燭 class solution object def minsubarraylen self,s,nums type s int ty...

LeetCode 209 長度最小的子陣列

題目鏈結 題目描述 給定乙個含有 n 個正整數的陣列和乙個正整數 s 找出該陣列中滿足其和 s 的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例輸入 s 7,nums 2,3,1,2,4,3 輸出 2 解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。解決方法 兩種方法 ...

Leetcode209 長度最小的子陣列

給定乙個含有 n 個正整數的陣列和乙個正整數 s 找出該陣列中滿足其和 s 的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例 輸入 s 7,nums 2,3,1,2,4,3 輸出 2 解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。public intminsubarr...