使用滑动窗口的方式,首先先从最前面找到大于等于s的窗口,首先看是否可以缩小窗口,不能缩小窗口的话首先end++;
sum-nums[begin]+nums[end],之后缩小窗口 ,直到窗口末尾到达数组末尾
int minSubArrayLen(int s, std::vector<int>& nums) {
int sum=0;
int min=0;
int begin=0,end=0;
int i=0;
for(;i<nums.size();i++){
sum+=nums[i];
end=i;
if(sum>=s)
{
while(sum-nums[begin]>=s){
sum=sum-nums[begin];
begin++;
}
min=end-begin+1;
break;
}
}
end=i+1;
while(end<nums.size()){
sum=sum-nums[begin++]+nums[end];
while(sum-nums[begin]>=s){
sum=sum-nums[begin];
begin++;
}
if(end-begin+1<min)
min=end-begin+1;
end++;
}
return min;
}