class Solution {
public int minSubArrayLen(int s, int[] nums) {
//滑动窗口法
//1.定义左右“窗口”,以及"窗口"里的数的和
//***还有最重要的‘最小长度’!!!!
int left = 0;
int sum = 0;
int small = Integer.MAX_VALUE;//先给他最大值,因为一会更新的那肯定是最小值的
//2.遍历数组
for (int right = 0;right < nums.length;right ++) {
sum += nums[right];
while (sum >= s) {
//只要满足条件了就马上开始更新最小值
small = Math.min(small,right - left + 1);
sum -= nums[left];
left ++;
}
}
//这一步很关键,意思是确认这个small是否还等于最大值,
//意味着根本没进入让它变小的循环,意味着sum从来没有大于这个目标s,所以返回一个0
return small == Integer.MAX_VALUE ? 0 : small;
}
}
08-14
705
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)