剑指offer 和大于等于target的最短子数组
力扣题目
解题思路:
双指针(有点滑动窗口的思想)
1.初始话最短数组的长度 min = Integer.MAX_VALUE
2.初始化一个数组的和 sum = 0;
3.定义变量(窗口的前后指针)i=0 j=0 j为快指针
4.开始遍历,当sum的值大于等于target时更新min
5.缩小窗口范围,加入后边的数组元素。
class Solution {
public int minSubArrayLen(int target, int[] nums) {
//设置最小初始值
int min = Integer.MAX_VALUE;
//初始化数组和
int sum = 0;
//定义两个变量i,j
for(int i=0,j=0;j<nums.length;j++){
//扩大窗口
sum += nums[j];
while(i<=j && sum>=target){
//更新最小值
min = Math.min(min,j-i+1);
//缩小窗口
sum-= nums[i++];
}
}
//若所有数组和都小于target,则返回0,否则返回更新值
return min == Integer.MAX_VALUE?0:min;
}
}
本文来自博客园,作者:蹇爱黄,转载请注明原文链接:https://www.cnblogs.com/jianjiana/p/15863171.html