思路
这道题目我们可以使用滑动窗口的方式来进行解决。我们先让滑动窗口的右边界进行移动,直到获取到的元素的总和大于目标值target,在这种情况下,我们可以移动滑动窗口的左边界,从而尽可能地缩小子数组的长度,从而获取到长度最小的子数组。
代码
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int l=0;
int result = Integer.MAX_VALUE;
int middle=0;
for(int r=0;r<nums.length;r++){
middle+=nums[r];
while(middle>=target){
result = Math.min(r-l+1,result);
middle-=nums[l];
l++;
}
}
if(result==Integer.MAX_VALUE)
return 0;
return result;
}
}