题目链接:力扣
尝试思路:
设置子数组的左边界i,右边界j,指针j遍历数组
当子数组和>target时进行子数组长度,并尝试缩小子数组,并与min比较取较小值。
测试不通过:
没有考虑无满足条件子数组的情况,在返回前添加判断即可
最终代码如下:
public static int minSubArrayLen(int target, int[] nums) {
int i = 0;
int min = Integer.MAX_VALUE;
int sum = 0;
for (int j = 0; j < nums.length; j++) {
sum += nums[j]; // 记录当前连续子数组的和
if(sum >= target){
while(i<=j && sum>=target){
min = Math.min(min, j-i+1); // 与min比较取小值
sum -= nums[i++]; // 尝试缩小子数组
}
}
}
if(min > 100000)
return 0;
return min;
}