单调队列应用介绍

news2024/12/28 3:24:14

单调队列应用介绍

  • 定义
  • 应用场景
  • 实现模板
  • 具体示例
    • 滑动窗口最大值
      • 问题描述
      • 问题分析
      • 代码实现
    • 带限制的子序列和
      • 问题描述
      • 问题分析
      • 代码实现
    • 跳跃游戏
      • 问题描述
      • 问题分析
      • 代码实现

定义

队列(Queue)是另一种操作受限的线性表,只允许元素从队列的一端进,另一端出,具有先进先出(FIFO)的特性。但**单调队列(Monotonic Queue)**是一种特殊的队列,它首先是一个双端队列(可在队头/队尾进行读写),其次队列内部的元素单调递增/递减。

单调队列具有以下特性:

  • 当前最优解在队头
  • 插入元素都是从队尾插入
    • 会剔除队尾不符合单调性的元素(类似栈的出栈动作)
    • 会弹出队头不满足区间限制的元素(单调队列解决的问题一般都带有区间限制)

因此,可以把 单调队列看作是 滑动窗口 和 单调栈 的组合体。

应用场景

  • 解决滑动窗口的最值问题
    比如滑动窗口内的最大值问题
    滑动窗口最大值

  • 适用于最优化DP(动态规划)算法中动态规划转移,对应的动态转移方程类似 f ( i ) = max ⁡ l < = j < = r ( f ( j ) + b ( j ) + a ( i ) ) = max ⁡ l < = j < = r ( f ( j ) + b ( j ) ) + a ( i ) f(i) = \max_{l<=j<=r}(f(j) + b(j) + a(i)) = \max_{l<=j<=r}(f(j) + b(j)) + a(i) f(i)=l<=j<=rmax(f(j)+b(j)+a(i))=l<=j<=rmax(f(j)+b(j))+a(i),其中 max ⁡ l < = j < = r ( f ( j ) + b ( j ) ) \max_{l<=j<=r}(f(j) + b(j)) l<=j<=rmax(f(j)+b(j

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2183124.html

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

相关文章

系统信息规划-系统架构师(七十四)

1前驱图 解析&#xff1a; 当S1执行完&#xff0c;C1S2并行执行&#xff0c;C1和S2执行完&#xff0c;P1,C2,S3并行执行&#xff0c;同理&#xff0c;P2C3并行执行。 直接制约则表示C1和P1受S1制约。 间接则代表S2和S3受S1制约。 2系统移植也是系统构建的一种实现方…

学习记录:js算法(五十一):统计二叉树中好节点的数目

文章目录 统计二叉树中好节点的数目网上思路 总结 统计二叉树中好节点的数目 给你一棵根为 root 的二叉树&#xff0c;请你返回二叉树中好节点的数目。 「好节点」X 定义为&#xff1a;从根到该节点 X 所经过的节点中&#xff0c;没有任何节点的值大于 X 的值。 图一&#xff1…

长江存储致态TiPlus7100 4TB满盘读写测试:性能几乎没有下降

一、前言&#xff1a;看看满盘状态下致态TiPlus7100 4TB性能会如何&#xff01; 现在还有很多同学对于长江存储品牌的存储产品不太信任&#xff0c;在选择SSD时会优先考虑三星、西数这样的品牌。 有鉴于此&#xff0c;我们此次会将手上的长江存储致态TiPlus7100 4TB SSD进行更严…

【STM32单片机_(HAL库)】4-2-1【定时器TIM】定时器输出PWM实现呼吸灯实验

1.硬件 STM32单片机最小系统LED灯模块 2.软件 pwm驱动文件添加定时器HAL驱动层文件添加GPIO常用函数定时器输出PWM配置步骤main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "pwm.h"int main(void) {HA…

音视频入门基础:FLV专题(10)——Script Tag实例分析

一、引言 在《音视频入门基础&#xff1a;FLV专题&#xff08;9&#xff09;——Script Tag简介》中对FLV文件的Script Tag进行了简介。下面用一个具体的例子来对Script Tag进行分析。 二、Script Tag的Tag header实例分析 用notepad打开《音视频入门基础&#xff1a;FLV专题…

鸿蒙跨端实践-JS虚拟机架构实现

作者&#xff1a;京东科技 杜强强 前言 在Roma跨端方案中&#xff0c;JS虚拟机是框架的核心&#xff0c;负责执行动态化的JS代码。在Android平台采用了基于V8的J2V8&#xff0c;iOS平台则使用了系统自带的JSCore&#xff0c;而在HarmonyOS中&#xff0c;由于业界无类似的框架&a…

C++11_左值引用与右值引用

在C11之前&#xff0c;是没有右值引用的概念的&#xff0c;在C11之后才新增了右值引用。其实无论是左值引用还是右值引用都是给对象取别名。 认识左值和右值 什么是左值&#xff1f; 左值是一个表示数据的表达式(如变量名或解引用的指针)&#xff0c;我们可以获取它的地址可…

YOLOv11改进策略【损失函数篇】| Shape-IoU:考虑边界框形状和尺度的更精确度量

一、本文介绍 本文记录的是改进YOLOv11的损失函数&#xff0c;将其替换成Shape-IoU。现有边界框回归方法通常考虑真实GT&#xff08;Ground Truth&#xff09;框与预测框之间的几何关系&#xff0c;通过边界框的相对位置和形状计算损失&#xff0c;但忽略了边界框本身的形状和…

PV大题--专题突破

写在前面&#xff1a; PV大题考查使用伪代码控制进程之间的同步互斥关系&#xff0c;它需要我们一定的代码分析能力&#xff0c;算法设计能力&#xff0c;有时候会给你一段伪代码让你补全使用信号量控制的操作&#xff0c;请一定不要相信某些人告诉你只要背一个什么模板&#…

Java线程入门

目录 一.线程相关概念 1.程序&#xff08;program&#xff09; 2.进程 3.线程 4.其他相关概念 二.线程的创建 1.继承Thread 2.Runnable接口 3.多线程机制&#xff08;重要&#xff09; 4.start() 三.线程终止--通知 四.线程&#xff08;Thread&#xff09;方法 1.常…

fastAPI教程:数据库操作

FastAPI 六、数据库操作 FastAPI支持操作各种数据库&#xff0c;但本身并没有内置关于任何数据库相关的模块。因此我们可以根据需求使用任何数据库&#xff0c;包括关系型&#xff08;SQL&#xff09;数据库&#xff0c;例如&#xff1a;PostgreSQL、MySQL、SQLite、Oracle、…

【AGC005D】~K Perm Counting(计数抽象成图)

容斥原理。 求出f(m) &#xff0c;f(m)指代至少有m个位置不合法的方案数。 怎么求&#xff1f; 注意到位置为id&#xff0c;权值为v ,不合法的情况&#xff0c;当且仅当 v idk或 v id-k 因此&#xff0c;我们把每一个位置和权值抽象成点 &#xff0c;不合法的情况之间连一…

【JVM】基础篇

1 初识JVM 1.1 什么是JVM JVM 全称是 Java Virtual Machine&#xff0c;中文译名 Java虚拟机。JVM 本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行Java字节码文件。 Java源代码执行流程如下&#xff1a; 分为三个步骤&#xff1a; 1、编写Java源代码文件。 …

自动驾驶系列—深度剖析自动驾驶芯片SoC架构:选型指南与应用实战

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

认知杂谈74《远离渣女陷阱,拥抱健康情感》

内容摘要&#xff1a; 渣女在感情中使用甜言蜜语陷阱&#xff0c;利用男性渴望理解和关爱的心理&#xff0c;通过虚假承诺和情感操控来获得利益。 男性易陷入这种陷阱&#xff0c;因为他们可能因压力大、感性而易受感动。为了避免这种情况&#xff0c;男性需要辨别言行一致性&a…

【含文档】基于Springboot+Vue的国风彩妆网站(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

软件设计之SSM(4)

软件设计之SSM(4) 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷新版SSM框架全套视频教程&#xff0c;Spring6SpringBoot3最新SSM企业级开发 资料可以去尚硅谷官网免费领取 学习内容&#xff1a; 基于配置类方式管理Bean 完全注解开发第三…

共模电感工作原理:【图文讲解】

共模电感&#xff0c;相信做电源较多的朋友用的比较多&#xff0c;而做消费级产品的朋友或许用的不是那么的多。但是还是有必要了解了解。 先上图&#xff0c;看看它长什么样子&#xff1a; &#xff08;实物图&#xff09; &#xff08;结构图&#xff09; 很显然&#xff0…

【Ubuntu】安装常用软件包-mysql

我的几个服务是部署在docker的同一个网络里&#xff0c;这样相互访问就可以通过docker容器的名字访问&#xff0c;比如容器A访问容器B&#xff0c;就可以http://B:8080/xxx 这样访问&#xff0c;不用关心ip是多少。 所以mysql前面文章给安装到主机里&#xff0c;感觉有点坑自己…