209. 长度最小的子数组
理解
该题用到了滑动窗口
代码
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int left = 0,
right = 0;
int sum = 0;
int result = Integer.MAX_VALUE; //保存最小子数组长度
for ( ; right < nums.length; right++) {
sum += nums[right];
while(sum >= target) { //触发窗口滑动条件
result = Math.min(result, right-left+1);
//窗口缩小,减去窗口之外的值(之前包括在窗口中)
sum -= nums[left++];
}
}
if (result == Integer.MAX_VALUE) { //可能没有合适的子数组
return 0;
}
return result;
}
}

浙公网安备 33010602011771号