题目:

解析:
我们可以用滑动窗口的思想,通过一个动态的j表示结束位置,一个动态的i表示起始位置,假设满足初始条件的数组大小result为无穷大,通过j先遍历数组并求和,用一个sum存储元素的和,当sum的值大于等于target的值时,说明该区间是符合条件的区间,这时候通过i的右移(i++)看是否这个区间的能否更小(i右移的过程中sum要减去i下标所对应的值),区间的长度subl=j-i+1,用它和result进行比较选最小值为新数组的长度(如果不存在满足条件的数组,最后一定要把result的值改为0);
代码:
java
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int i = 0,sum = 0;
int result = Integer.MAX_VALUE;
for(int j = 0;j <= nums.length-1; j++){
sum += nums[j];
while(sum >= target){
int subl = j - i + 1;
result =Math.min(result,subl);
sum -= nums[i];
i++;
}
}
return result == Integer.MAX_VALUE ? 0 : result;
}
}