【算法小课堂】滑动窗口

news/2024/7/5 1:54:56

滑动窗口

在这里插入图片描述

基本概念:

滑动窗口本质是双指针算法的一种演变

本质上就是同向双指针,窗口的范围就是[left,right)

image-20230925150305094

滑动窗口大致可以分为两类

  • 窗口大小不变的
  • 窗口大小变化的

滑动窗口遇到一些验证重复性的问题的时候可以用哈希表来优化

核心思想:

三步走:

  • 窗口的形成初期image-20230925151043949

  • 进窗口

开始遍历数组,right一直向右走直到遇到题目的判断条件,假设到了如下位置:

image-20230925151412135

窗口范围如图所示

  • 判断

这个时候进行判断,具体得看题目,而判断结束后先出窗口还是先更新结果得看具体题目

  • 出窗口

判断结束后,right不再移动,而left向前移动,窗口大小也随之改变

image-20230925151736685

  • 更新结果

根据具体题目的要求,写出更新结果的条件和语句

具体示例:

可见算法挨揍日记05-08

https://leetcode.cn/problems/minimum-size-subarray-sum/
本题就是在出窗口之前

时间复杂度:虽然代码是两层循环,但是我们的 left 指针和 right 指针都是不回退的,两者

最多都往后移动 n 次。因此时间复杂度是 O(N) 。

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int length = INT_MAX;
        int n = nums.size();
        int left = 0;
        int right = 0;
        int sum = 0;
        while(right<n)
        {
            sum+=nums[right];
            while(sum>=target)
            {
                length=min(length,right-left+1);
                sum-=nums[left++];
            }
            right++;
        }
        return length==INT_MAX?0:length;
    }
};

适用题目类型总结:

分析的对象是「⼀段连续的区间」,因此可以考虑「滑动窗⼝」的思想来解决

常见于子区间的最长最短问题等等

在这里插入图片描述


http://lihuaxi.xjx100.cn/news/1571477.html

相关文章

​全球人类读书会《乡村振兴战略下传统村落文化旅游设计》中国建筑出版传媒许少辉博士著作

​全球人类读书会《乡村振兴战略下传统村落文化旅游设计》中国建筑出版传媒许少辉博士著作

接口自动化测试数据驱动DDT模块使用

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; 一、DDT简单介绍 名称&#xff1a; Data-Driven Tests&#xff0c;数据驱动测试 作用&#xff1a; 由外部…

SpringMvc-HttpMessageConverter接口

虽然本文命题是HttpMessageConverter&#xff0c;但是常用的场景是修改字段值&#xff0c;如果不是&#xff0c;那你自定义Converter是为了什么&#xff1f;&#xff1f;&#xff1f; HttpMessageConverter是也是数据绑定接口&#xff0c;它负责实现HandlerMethodArgumentReso…

完成“重大项目”引进签约,美创科技正式落户中国(南京)软件谷

近日&#xff0c;美创科技正式入驻中国&#xff08;南京&#xff09;软件谷&#xff0c;并受邀出席中国南京“金洽会"之“雨花台区数字经济创新发展大会”。美创科技副总裁罗亮亮作为代表&#xff0c;在活动现场完成“重大项目”引进签约。 作为国家重要的软件产业与信息服…

JackJson多态

JsonTypeInfo 处理多态、序列化对象类型_赵丙双的博客-CSDN博客 JsonTypeInfo实现jackson的多态解析_MonkeyKing_sunyuhua的博客-CSDN博客 Java Jackson JsonTypeInfo 多态类型处理 - 简书 JsonTypeInfo 逻辑名称 JsonSubTypes、JsonTypeName_赵丙双的博客-CSDN博客

IoT 设备物联网通信中 NB-IoT、Cat.1、Cat.M 如何选型?

本篇文章介绍了物联网通信中涉及的NB-IoT、LTE-Cat.1 和 LTE-M &#xff0c;三种通信技术的各自优势&#xff0c;以及应用场景。 01 什么是 NB-IoT NB-IoT窄带物联网(Narrow Band Internet of Things)是 IoT 领域一个新兴的技术&#xff0c;支持低功耗设备在广域网的蜂窝数据连…

图像练习-计算平行线距离opencv(03)

原图 //对输入图像进行细化 cv::Mat ThinLine(const cv::Mat& matsrc, const int& iterations) {//CvSize size cvGetSize(src);cv::Mat dst matsrc.clone();//拷贝一个数组给另一个数组int _iwidth dst.cols;int _iheight dst.rows;int n 0, i 0, j 0;for (n …

【操作系统】24王道考研笔记——第五章 IO管理

第五章 IO管理 一、IO设备 1.1 基本概念与分类 1.2 IO控制器 电子部件 IO控制器组成 值得注意的小细节&#xff1a;①一个I/O控制器可能会对应多个设备&#xff1b; ②数据寄存器、控制寄存器、状态寄存器可能有多个&#xff08;如&#xff1a;每个控制/状态寄存器对应一个…