难度:中等
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥target 的长度最小的连续子数组[numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。
如果不存在符合条件的子数组,返回0。
题目链接
代码实现
class Solution {
//滑动窗口
public int minSubArrayLen(int target, int[] nums) {
if (nums == null) {
return 0;
}
//窗口的索引
int i = 0, j = 0;
int minLength = nums.length + 1;
int sum = 0;
while (j < nums.length) {
sum += nums[j];
while (sum >= target){
minLength = Math.min(minLength, j - i + 1);
sum -= nums[i++];
}
j++;
}
return minLength == nums.length + 1 ? 0 : minLength;
}
}