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;
        }
    }
  • 相关阅读:
    松翰单片机_SN8F570310——INTR
    松翰单片机_SN8F570310——EINT
    松翰单片机_SN8F570310——PWM
    松翰单片机_SN8F570310——SPI
    松翰单片机_SN8F570310——IIC
    松翰单片机_SN8F570310——UART
    全志_input
    全志_ADC驱动
    git随笔
    全志_外部中断
  • 原文地址:https://www.cnblogs.com/zhaojiayu/p/15389608.html
Copyright © 2011-2022 走看看