LeetCode 209.长度最小的子数组

5 阅读1分钟

思路

这道题目我们可以使用滑动窗口的方式来进行解决。我们先让滑动窗口的右边界进行移动,直到获取到的元素的总和大于目标值target,在这种情况下,我们可以移动滑动窗口的左边界,从而尽可能地缩小子数组的长度,从而获取到长度最小的子数组。

代码

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int l=0;
        int result = Integer.MAX_VALUE;
        int middle=0;
        for(int r=0;r<nums.length;r++){
            middle+=nums[r];
            while(middle>=target){
                result = Math.min(r-l+1,result);
                middle-=nums[l];
                l++;
            }
        }
        if(result==Integer.MAX_VALUE)
            return 0;
        return result;
    }
}