单调队列应用介绍

news/2024/10/3 23:32:53 标签: 算法

单调队列应用介绍

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

定义

队列(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.niftyadmin.cn/n/5689119.html

相关文章

大数据毕业设计选题推荐-民族服饰数据分析系统-Python数据可视化-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

【rCore OS 开源操作系统】Rust 练习题题解: Enums

【rCore OS 开源操作系统】Rust 练习题题解: Enums 摘要 rCore OS 开源操作系统训练营学习中的代码练习部分。 在此记录下自己学习过程中的产物&#xff0c;以便于日后更有“收获感”。 后续还会继续完成其他章节的练习题题解。 正文 enums1 题目 // enums1.rs // // No hi…

Leetcode 275. H 指数 II

1.题目基本信息 1.1.题目描述 给你一个整数数组 citations &#xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数&#xff0c;citations 已经按照 升序排列 。计算并返回该研究者的 h 指数。 h 指数的定义&#xff1a;h 代表“高引用次数”&#xff08;high …

MySQL基础篇 - 事务

01 事务的简介 【1】什么是事务&#xff1a;事务是一组操作集合&#xff0c;要么同时操作成功&#xff0c;要么同时操作失败。 【2】对于MySQL数据库来说默认一条SQL语句就是一个事务&#xff0c;且事务是默认自动提交的。 我们可以把多条SQL语句设置成一个事务&#xff0c;使…

微软准备了 Windows 11 24H2 ISO “OOBE/BypassNRO“命令依然可用

Windows 11 24H2 可能在未来几周内开始推出。 微软已经要求 OEM 遵循新的指南准备好 Windows 11 24H2 就绪的驱动程序&#xff0c;并且现在已经开始准备媒体文件 (.ISO)。 OEM ISO 的链接已在微软服务器上发布。 一个标有"X23-81971_26100.1742.240906-0331.ge_release_sv…

overleaf的使用[11]:使用和管理LaTeX模板

菜鸟&#xff1a;嗨&#xff0c;老鸟&#xff0c;我最近在使用Overleaf写论文&#xff0c;但总觉得每次都要从头开始&#xff0c;效率好低。你能告诉我有什么办法可以改善这个情况吗&#xff1f; 老鸟&#xff1a;当然可以&#xff0c;菜鸟&#xff01;你有没有听说过在Overle…

CentOS 7 系统中安装与配置 Telnet 服务详解(使用root登录)

目录 前言1. 安装 Telnet 服务端2. 配置 Telnet 服务允许 root 用户登录3. 启动与管理 Telnet 服务4. 配置防火墙允许 Telnet 通信5. 注册 Telnet 服务6. 添加 pts/0 终端7. 重启 xinetd 服务8. 在 Windows 本地终端安装 Telnet 客户端结语 前言 Telnet 是一种网络协议&#x…

用网络分析仪测试功分器驻波的5个步骤

在射频系统中&#xff0c;功分器的驻波比直接关系到信号的稳定性和传输效率。本文将带您深入了解驻波比的测试方法和影响其结果的因素。 一、功分器驻波比 驻波(Voltage Standing Wave Ratio)&#xff0c;简称SWR或VSWR&#xff0c;是指频率相同、传输方向相反的两种波&#xf…