滑动窗口
题目 LC209 leetcode.cn/problems/mi…
题解
public int minSubArrayLen(int target, int[] nums) {
// 初始化左指针
int left = 0;
// 初始化当前子数组的和
int sum = 0;
// 初始化结果为最大整数值
int res = Integer.MAX_VALUE;
// 遍历数组,右指针从头到尾扫描数组
for (int right = 0; right < nums.length; right++) {
// 将当前右指针指向的值加到 sum 中
sum += nums[right];
// 当当前子数组的和大于等于目标值时
while (sum >= target) {
// 更新结果为当前子数组长度的最小值
res = Math.min(res, right - left + 1);
// 将左指针指向的值从 sum 中减去
sum -= nums[left];
// 左指针右移一位
left++;
}
}
// 如果结果仍为最大整数值,表示没有找到符合条件的子数组,返回 0;否则返回结果
return res == Integer.MAX_VALUE ? 0 : res;
}