码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 滑动窗口内最大值和最小值的更新结构


    问:窗口不管是 L L L 还是 R R R 滑动之后,都会让窗口呈现新状况,如何能够更快地得到窗口当前状况下的最大值和最小值?最好平均下来复杂度能做到 O ( 1 ) O(1) O(1)。

    答:利用单调的双端队列。


    双端队列:可以从队首进出队,也可以从队尾进出队。

    示例:窗口内最大值的更新结构

    严格规定双端队列从队首到到尾,存放的元素(存放的是数组下标)对应的值由大到小。

    R R R 往右滑动时,窗口内的最大值更新流程:

    • 随着 R R R 的滑动,从队尾插入数据;
    • 当待插入的数据比此时队尾的数据大或者相等时,则弹出此时队尾的数据,新的数据从队尾入队。

    L L L 往右滑动时,窗口内的最大值更新流程:

    • 随着 L L L 的滑动,从队首弹出元素;
    • 如果 L L L 位置就是当前队首元素,则弹出;否则保留在队列中。弹出的元素已经过期,而此时的新队首就是新的窗口内的最大值。

    之所以要在双端队列中存放下标,是因为根据下标可以得到对应的元素,且根据下标可以知道当前队列的队首是否过期。

    此单调双端队列的含义:已经确定了目前窗口下单调双端队列的情况,如果此时依次让窗口缩小的话,哪些位置的数会依次成为窗口内的最大值。

    优势:假设 L L L 和 R R R 会滑过数组中的每个数,则数组中的每个数最多都会进一次和出一次队,所以在窗口滑动的过程中,双端队列更新的总代价是 O ( n ) O(n) O(n),均摊代价是 O ( 1 ) O(1) O(1),而每次得到的窗口状态就是双端队列的队首位置的元素,即查询代价是 O ( 1 ) O(1) O(1)。

  • 相关阅读:
    ipaguard界面概览
    【单片机】17-温度传感器DS18B20
    [深入研究4G/5G/6G专题-49]: 5G Link Adaption链路自适应-5-上行链路自适应ULLA-PUSCH信道
    浅谈.net core如何使用EFCore为一个上下文注类型注入多个实例用于连接主从数据库
    2022-09-17青少年软件编程(C语言)等级考试试卷(五级)解析
    在 React Router 中使用 JWT
    微服务全链路灰度新能力
    年薪超20万,IT业成2021年平均工资最高的行业
    Double 4 VR智能互动系统在轨道交通实训教学中的应用
    C++:多态的内容和底层原理
  • 原文地址:https://blog.csdn.net/u011386173/article/details/127852212
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号