本题主要采用滑动窗口法,当和大于目标时就减小窗口尺寸,当和小于窗口尺寸时就扩大窗口尺寸,代码如下:
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int left = 0,right = 0,sum = 0;
int result = Integer.MAX_VALUE;
for (right = 0; right < nums.length; right++) {
sum += nums[right];
while (sum >= target) {
result = Math.min(result, right - left + 1);
sum -= nums[left++];
}
}
return result == Integer.MAX_VALUE ? 0 : result;
}
}