用滑动窗口法,维护两个变量left,right,当它们之间的数组和sum>=s时,逐步将left往右移,在保证sum>=s时,更新sum和len。当sum<s时,将right往右移,直到sum>=s时,重复刚刚的步骤。
class Solution {
public int minSubArrayLen(int s, int[] nums) {
int result = Integer.MAX_VALUE, sum = 0, j = 0;
for (int i = 0; i < nums.length; i++){
sum+=nums[i];
while (sum >= s){
result = Math.min(result, i-j+1);
sum-=nums[j++];
}
}
return result == Integer.MAX_VALUE? 0:result;
}
}