单调栈和单调队列

本文介绍了单调栈和单调队列的概念,强调它们作为算法思想而非数据结构的重要性。单调栈用于找向左或向右第一个比当前元素小(大)的元素,而单调队列则用于维护一个序列的窗口最大值(最小值)。文中通过洛谷上的例题P2659和P1886,详细解析了单调栈和单调队列的解题思路,并提供了相关代码模板。
摘要由CSDN通过智能技术生成

最近我发现很多人不知道单调栈是什么,单调队列是什么,比如我的队友,所以我想统一讲一下单调栈和单调队列。但是即使我知道单调栈和单调队列,由于洛谷上面没有单调栈专题,我是没有练习过单调栈的,导致我在比赛中十分生疏,失误连连,最后痛失ICPC银牌,我因为这个几天都没睡好,像是得了银川+单调栈PTSD,一听到这两个词就难受。

定义:

单调栈和单调队列与其说是一种数据结构,我更认为他们是一种算法思想。

单调栈:维护一个保持栈的单调性

单调队列:维护一个队列的单调性

作用:

两者名字相似,作用完全不同

单调栈:找向左,向右第一个比当前元素小(大)的元素。O(n)算法。

单调队列:私以为单调队列就是滑动窗口,大部分是定长的滑动窗口,也有些变长的滑动窗口,那些变长的滑动窗口其实更像是尺取的一种思想。滑动窗口,顾名思义,就是在一个数组结构中滑动的窗口,作用,维护在数组中的一个定长的窗口的最大值(最小值),这里听不懂窗口可以直接看例题。O(n)算法。

例题:

单调栈:https://www.luogu.org/problem/P2659

题目背景

GD是一个热衷于寻求美好事物的人,一天他拿到了一个美丽的序列。

题目描述

为了研究这个

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值