letcode 209 長度最小的子陣列

2021-09-11 08:28:11 字數 862 閱讀 5064

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

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

輸出: 2

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

本題適合使用滑動視窗法進行求解

定義兩個指標i,j,都一開始指向陣列的開頭

在開始的時候,讓j向後遍歷 ,當達到 視窗中的陣列》 = 給定的目標數字時,停止向後,記錄此時的j-i+1 即 視窗長度 然後 指標i開始向前,如果 現在的視窗 之和 依然大於或者等於 目標數字 更新 最小長度 ,那麼i繼續向後遍歷 ,如果 視窗和小於了 目標數字 ,i停止向後,j++,如此迴圈,直到 j到達了邊界

最後返回最小的長度即可

/**

* */

/***

* @author 18071

* @date 2023年2月26日 功能:滑動視窗 ---定義前後指標 ,i,j

***/

public class test ;

int k=100;

system.out.println(find(x,k));

}public static int find(int x, int k)

if(sum>=k&&lowheigh-low+1)

sum-=x[low];

low++;

}} return min;

}}

結果截圖

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 時間複雜...