从第一个开始,把每个开头都标记为start,然后从start往后一直加直到相加大于sum,(比较一次最小长度),然后在start往后移动一次,sum删掉start的那个数,如果数还是大于sum,更新长度,否者在往后加一位
public int minSubArrayLen(int s, int[] nums) {
if(nums==null || nums.length==1)
return 0;
int result = nums.length;
int start=0;
int sum=0;
int i=0;
boolean exists = false;
while(i<=nums.length){
if(sum>=s){
exists=true; //mark if there exists such a subarray
if(start==i-1){
return 1;
}
result = Math.min(result, i-start);
sum=sum-nums[start];
start++;
}else{
if(i==nums.length)
break;
sum = sum+nums[i];
i++;
}
}
if(exists)
return result;
else
return 0;
}