public int minSubArrayLen(int s, int[] nums) {
int sum = 0;
int count = 0;
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
count++;
if (sum >= s){
list.add(count);
i = i - count + 1;
sum = 0;
count = 0;
}
}
if (list.size() == 0){
return 0;
}
list.sort(Integer::compareTo);
System.out.println(list);
return list.get(0);
}
public int minSubArrayLen1(int s,int[] nums){
//双指针优化算法
int n = nums.length;
if (n == 0){
return 0;
}
int min = Integer.MAX_VALUE;
int left = 0;
int right = 0;
int sum = 0;
while (right < n){
sum += nums[right];
right++;
while (sum >= s){
min = Math.min(min,right - left);
sum -= nums[left];
left++;
}
}
//一定是判断 == ,判断 == 要比判断 > 或者 < 要快
return min == Integer.MAX_VALUE ? 0 : min;
}
0312-2020-LEETCODE-209-长度最小的子数组(双指针滑动窗口典型)
猜你喜欢
转载自blog.csdn.net/weixin_43221993/article/details/104828463
今日推荐
周排行