LCR 008. 长度最小的子数组 - 力扣(LeetCode)
思路:
- 首先在暴力枚举的方法下,我们可以进行优化,让right不用从头开始,只需让left移动,进行判断。
- 然后就是变成了同向双指针,也就是滑动窗口。
- right向右移动,同时记录下sum 的值,直到sum >= target
- 然后left右移,继续判断
代码:
public int minSubArrayLen(int target, int[] nums) {int n = nums.length;int minLen = Integer.MAX_VALUE;int sum = 0;for(int left = 0, right = 0; right < n; right++){//进窗口sum += nums[right];//连续判断while(sum >= target){//更新最小长度minLen = Math.min(minLen,right - left +1);//滑出窗口sum -= nums[left++];}}return minLen == Integer.MAX_VALUE ? 0 : minLen;}