【算法小课堂】滑动窗口

news2024/11/19 19:17:41

滑动窗口

在这里插入图片描述

基本概念:

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

本质上就是同向双指针,窗口的范围就是[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://www.coloradmin.cn/o/1039337.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

​旅行季《乡村振兴战略下传统村落文化旅游设计》许少辉八一书作想象和世界一样宽广

​旅行季《乡村振兴战略下传统村落文化旅游设计》许少辉八一书作想象和世界一样宽广

DAZ To UMA⭐二.设置DAZ导出的形态键 和 Daz贴图位置

文章目录 🟧 形态键介绍及在Unity3D中的用途1️⃣ Daz中的形态键2️⃣ Blender 中的形态键3️⃣ 形态键在Unity中的作用🟩 设置DAZ导出的形态键1️⃣ 找到要导出的形态键名称2️⃣ 打开导出面板3️⃣ 设置导出规则举例 : 导出身体Morphs举例:导出嘴部Morphs🟦 获取模型纹…

uni-app 之 去掉顶部导航

uni-app 之 去掉顶部导航 uniapp怎么样去掉顶部导航 uniapp去掉顶部导航的方法&#xff1a; 1、去掉所有导航栏&#xff1b; 2、单一页面去掉顶部导航栏。 image.png uniapp去掉顶部导航的方法&#xff1a; 1、去掉所有导航栏 "globalStyle": {"navigationBar…

个人电脑怎么搭建服务器 花生壳内网穿透 设置路由器虚拟服务器

在个人电脑上搭建服务器并使用花生壳进行内网穿透&#xff0c;以及在路由器上设置虚拟服务器&#xff0c;需要一些步骤&#xff1a; 内网穿透设置&#xff1a; 配置内网穿透&#xff0c;选择服务器软件的端口号&#xff0c;然后将其映射到您的服务器的内部IP地址和端口号。这将…

web信息收集

1.绕过cdn方法 2.搜索引擎语法 3.whois查询 4.端口探查 5.网站架构 6.其他 7.网站部署结构

Unity3D 检测鼠标位置的Sprite像素颜色

思路 获取鼠标所在屏幕坐标(Vector2)通过相机ScreenToWorldPoint(Vector3)转为世界坐标 (注意Vector3的z是距离相机的距离&#xff0c;相机需要正交)通过SpriteRenderer访问边界Bounds通过Bounds.Contain检测世界坐标是否在SpriteBounds内通过比例计算来确定在Sprite内的UV坐标…

企业sdwan组网要求:企业使用SD-WAN组网时有哪些要求?

在当今信息时代&#xff0c;企业对于网络的稳定性和高效性要求越来越高。SD-WAN(软件定义广域网)作为 一种新兴的网络技术&#xff0c;为企业提供了更加灵活、可靠和安全的广域网解决方案。在组建企业SD- WAN网络时&#xff0c;有一些关键要求需要考虑。 1. 高可用性&#xff…

全球首发搭载“舱驾一体”的智能座舱,诺博汽车如何引领未来出行?

智能座舱升级战已经全面打响。 一方面&#xff0c;智能座舱已经进入了3.0时代&#xff0c;车企对于差异化要求越来越高&#xff0c;如何进一步提升单一功能体验并进行深度融合&#xff0c;已经成为了智能座舱市场比拼的重点。 另一方面&#xff0c;在5G、车联网、大数据、人工…

Web安全扫描工具:Appscan安装和使用,无偿分享安装包与教程

Appscan 1、简介2、具体使用规则1、常用界面2、工作原理3、设置小技巧 3、实例扫描1、验证码绕过2、越权扫描3、手动绕过验证码扫描 1、简介 AppScan是一款商业化的web安全扫描工具&#xff0c;web扫描领域十分受欢迎 点击此处&#xff0c;先领取资料再阅读&#xff0c;附安装…

LPA*算法图文详解

之前我们看过了A* 算法&#xff0c;知道了A* 算法的基本原理&#xff0c;但是A* 算法的缺陷也很明显&#xff1a;它是离线的路径规划算法&#xff0c;只能一次规划出路径&#xff0c;但是后面路径被改变的话就无法生效了。针对这个问题&#xff0c;人们研究出了D* 算法。D* 算法…

ORAS轻松地在 OCI 注册表中分发工件

什么是ORAS? 词汇大全 ORAS 实际上是使用 OCI Artifacts 的工具。它将媒体类型视为难题的关键部分。容器镜像永远不会被认为是有问题的工件。ORAS 提供 CLI 和客户端库来跨 OCI 兼容的注册表分发工件。 ORAS的特点 ORAS是如何运作的? 能够跨OCI兼容的注册表或OCI图像布局分…

十大服装店收银系统有哪些 好用的服装收银软件推荐

服装店收银系统对于门店和服装卖场来说非常重要&#xff0c;可以提高工作效率。下面是推荐的十大服装店收银系统&#xff0c;供开设服装店的企业选择合适的收银软件用于经营管理。 1、核货宝收银系统 支持快速收银&#xff0c;同时适用于服装行业&#xff0c;能够支持多规格多…

在 React 表单开发时,有时没有必要使用State 数据状态

说到在React中处理表单&#xff0c;最流行的方法是将输入值存储在状态变量中。遵循这种方法的原因之一是因为毕竟它是React&#xff0c;每个人都倾向于使用它附带的hooks。使用hooks可以解决React中的许多问题&#xff0c;但是在处理表单时是否必需呢&#xff1f;让我们来看看。…

基于UWB技术高精度人员定位系统源码

一、UWB定位技术有什么优势&#xff1f; UWB技术解决了困扰传统无线通信技术多年的有关传播方面的重大难题&#xff0c;具有对信道衰落不敏感、发射信号功率谱密度低、截获率低、系统复杂度低、能提供数厘米的定位精度等优点。 1.系统结构简单 UWB系统中的发射器直接用脉冲小…

244:vue+openlayers 显示滚动效果的线段Line

第244个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayers项目中绘制滚动效果的线段。思路是先画一个直线,然后画一个小点的dashed线段,通过setInterval变更DashOffset的值来生成动画的效果。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文…

视频监控/视频汇聚/安防视频监控平台EasyCVR配置集群后有一台显示离线是什么原因?

开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多…

图像语义分割概述

图像语义分割概述 一、图像语义分割概念 图像语义分割&#xff08;Image Semantic Segmentation&#xff09;是一项计算机视觉任务&#xff0c;其目标是将输入的图像分割成多个区域&#xff0c;并为每个像素分配一个语义类别标签&#xff0c;以表示该像素属于图像中的哪个物体…

C++ 友元、重载、继承、多态

友元 关键字&#xff1a;friend 友元的三种实现 全局函数做友元类做友元成员函数做友元 全局函数做友元 //建筑物类 class Building {//goodGay全局函数是Building好朋友&#xff0c;可以访问Building中私有成员friend void goodGay(Building& building); public:Build…

人才测评系统在企业招聘中的应用

人才测评作为招聘工具&#xff0c;已经频繁应用在各大企业中&#xff0c;如今的社会中&#xff0c;人才对于企业而言&#xff0c;可谓是创造产值的基础。换句话说&#xff0c;”企业得人才者、才能得天下”&#xff0c;有了人才之后&#xff0c;企业在行业中才有竞争力。 目前…

Lnmp架构之Redis服务

1、redis部署 停掉mysql服务 如果在纯净的环境下&#xff0c;make的时候需要安装gcc和make redis服务常用命令 2、redis主从同步 复制文件发送到接收主机server2&#xff0c;server3 server2&#xff0c;server3接收到文件后&#xff0c;和11master端一样的配置方法 3、redis主…