LeetCode 209题解

深入理解 JVM 原理
深入理解 JVM 原理
wangxiaoming

LeetCode 209
滑动窗口的处理

public class LeetCode209 {
    
    public int minSubArrayLen(int s, int[] nums) {
        // 滑动窗口的思路
        int left = 0;
        int right = 0;
        int sum = 0;
        int res = nums.length + 1;
        while (left < nums.length) {
            // 当窗口内总和小于 s 那么窗口向右扩大  1 个
            if (right  < nums.length && sum < s) {
                sum += nums[right++];
            } else {
                sum -= nums[left++];
            }
            // 很神奇的是要这一行
            if(sum >= s){
                // 如果超了,sum >=s 可以考虑滑动窗口右移动
                res = Math.min(res, right - left);
            }
        }

        if (res == nums.length + 1)
            return 0;
        return res;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        int s = 7;
        int[] nums = new int[]{2,3,1,2,4,3};
        System.out.println(new LeetCode209().minSubArrayLen(s, nums));
    }

}

wangxiaoming CSDN认证博客专家 架构 Spring Boot Redis
博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值