**给定一个含有 n 个正整数的数组和一个正整数 target
找出该数组中满足其和 ≥ target 的长度最小的连续子数组 ,并返回其长度
如果不存在符合条件的子数组,返回 0 **
这道题是典型的二分,二分长度尽量往左找,用check判断一下即可
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int n = nums.length;
int l = 1,r = n,min = 0;
while (l <= r){
int mid = (l+r)/2;
if(check(mid,nums,n,target)){
r = mid-1;
min = mid;
}else{
l = mid+1;
}
}
return min;
}
public boolean check(int x,int[] nums,int n,int target){
int sum = 0;
for (int i = 0; i < n; i++) {//求指定长度的子数组的和,用到了滑窗的思想
if (i >= x)
sum -= nums[i - x];
sum += nums[i];
if (sum >= target)
return true;
}
return false;
}
}