zoukankan      html  css  js  c++  java
  • 力扣209题(长度最小的子数组)

    209、长度最小的子数组

    基本思想:

    滑动窗口

    具体实现:

    1.窗口内是什么?

    窗口内是窗口起始位置和窗口结束位置框住的一段数组。

    2.窗口的起始位置如何移动?

    如果当前窗口的值>=s,窗口要缩小,就是起始位置向后移。

    3.窗口的结束位置如何移动?

    如果当前窗口的值<s,窗口要扩大,就是结束位置向后移。

    代码:

    class Solution {
        public int minSubArrayLen(int target, int[] nums) {
            int left = 0;//滑动窗口起始位置指针
            int sum = 0;//窗口内元素之和
            int result = Integer.MAX_VALUE;
            for (int right = 0; right < nums.length; right++){//如果当前窗口的值<s,窗口要扩大,就是结束位置向后移。
                sum += nums[right];
                while (sum >= target){
                    result = Math.min(result,right - left + 1);//找长度最小的
                    sum -= nums[left++];//如果当前窗口的值>=s,窗口要缩小,就是起始位置向后移。
                }
            }//如果当前窗口的值<s,窗口要扩大,就是结束位置向后移。
            return result == Integer.MAX_VALUE ? 0 : result;
        }
    }
  • 相关阅读:
    Method of Four Russians 学习笔记
    一道不知道哪里来的数论题
    ICPC2021银川 游记
    决策单调性优化dp学习笔记
    浅谈如何优美地实现线段树?
    2021 EC Final 2020 题解
    5.5 SYSU校内训练
    5.4 SYSU校内训练
    存储相关招聘信息-长期
    screen几个使用方法
  • 原文地址:https://www.cnblogs.com/zhaojiayu/p/15389608.html
Copyright © 2011-2022 走看看