

思想:
left,right指定一個(gè)數(shù)組長度

值小于s,就讓right++,sum=sum+arr[right],擴(kuò)大窗口,直到大于s,找到滿足題意的,記錄下來

值大于s,sum=sum-left,left++,縮小窗口,直到小于s,執(zhí)行上一步。找到滿足題意的,記錄下來

class Solution {
public int minSubArrayLen(int s, int[] nums) {
//滑動窗口的思想
//一開始窗口里面沒有值的[left,right]閉空間
int left=0,right=-1;
int sum=0;
int res=nums.length+1;
while(left<nums.length){
//如果小于s,right++,s=s+nums[right]
if(right+1<nums.length&&sum<s){
right++;
sum=sum+nums[right];
}
else{
sum=sum-nums[left];
left++;
}
if(sum>=s)
res=Math.min(res,right-left+1);
}
//表示沒找到
if(res==nums.length+1)
return 0;
return res;
}
}