思想:
left,right指定一个数组长度
值小于s,就让right++,sum=sum+arr[right],扩大窗口,直到大于s,找到满足题意的,记录下来
值大于s,sum=sum-left,left++,缩小窗口,直到小于s,执行上一步。找到满足题意的,记录下来
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;
}
}