209.长度最小的子数组
使用滑动窗口+双指针:
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int left = 0,right = 0,sum = 0; //定义left,right两个指针确定子数组的开始、结束下标
int min = Integer.MAX_VALUE;
while(right < nums.length){
sum += nums[right];
while(sum >= target){
min = Math.min(min, right-left+1);
sum = sum - nums[left]; //从sum中减去nums[left]并将right右移,直到sum<target
left++;
}
right++;
}
return min == Integer.MAX_VALUE ? 0 : min;
}
}