给定一个数组 nums 和一个正整数 target , 找出满足和大于等于 target 的长度最短的连续子数组并返回其长度,如果不存在这种子数组则返回 0。
数据范围:数组长度满足
,数组中的元素满足
, 
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @param target int整型
* @return int整型
*/
public int minSubarray (int[] nums, int target) {
// write code here
if(nums.length==0){
return -1;
}
ArrayList<Integer> maxArr=new ArrayList<>();
for(int i=0;i<nums.length;i++){
int sum=0;
int size=0;
for(int j=i;j<nums.length;j++){
if(sum<target){
sum+=nums[j];
size++;
}
if(sum>=target){
maxArr.add(size);
break;
}
}
}
int length=Collections.min(maxArr);
return length;
}
} // 考虑用滑动窗口处理很快!
public int minSubarray (int[] nums, int target) {
int left = 0, right = 0, sum = 0, min = nums.length;
while (right < nums.length) {
int in = nums[right];
right++;
sum += in;
while (sum >= target) {
min = Math.min(min, right - left);
int out = nums[left];
left++;
sum -= out;
}
}
return min == nums.length ? 0 : min;
}