当前位置:   article > 正文

力扣209. 长度最小的子数组

力扣209. 长度最小的子数组

在这里插入图片描述

思路:题目是 数组和 >= target,不是等于target
双指针法:用for循环中的 r 来界定右边界的下标,右边界每移动一位,左边界可能需要移动多位,所以内部再用while, 当满足 数组和>=target时,记录最小数组长度,再移动左边界,继续往后面找。

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int curNum = 0; //当前维护的窗口值的和
        int l = 0; //窗口左边界下标
        int ans = Integer.MAX_VALUE;//窗口长度

		//r是滑动窗口右边界
        for(int r=0; r<nums.length; r++){
            curNum += nums[r];
            //右边移动一位,左边可以移动多位,所以用while
            while(curNum >= target) {
                 ans = Math.min(ans, r-l+1);
                 curNum -= nums[l++];
            }
        }
        return ans==Integer.MAX_VALUE?0:ans;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/295151
推荐阅读
相关标签
  

闽ICP备14008679号