給定乙個含有 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 時間複雜...