单调队列
来源:互联网 发布:阿尔法拆单软件 编辑:程序博客网 时间:2024/05/16 06:34
单调队列是指队列中的元素按照严格单调递增或者单调递减的顺序。有两个性质(以单调递增队列为例):
1、从队头到队尾的元素是按照严格单调递增的,如(1,2,3,4,5)。
2、越靠近队头的元素越先入队
单调队列可以从两端进行操作(以单调递增队列为例):
入队:如果当前元素是e,从队尾开始检查,删除大于等于e的队尾元素,直到队尾元素小于e或者队列为空,然后将e插入队尾。如果队列大小有限制,则在入队之前检查队列大小,如果空间不够,则从队首弹出元素。
出队:直接从队首取元素,即最小值。
以下是一个单调递增队列的例子:
队列大小不能超过3,入队元素依次为3,2,8,4,5,7,6,4
3入队:(3)
3从队尾出队,2入队:(2)
8入队:(2,8)
8从队尾出队,4入队:(2,4)
5入队:(2,4,5)
2从队头出队,7入队:(4,5,7)
7从队尾出队,6入队:(4,5,6)
6从队尾出队,5从队尾出队,4从队尾出队,4入队:(4)
以上左端为队头,右端为队尾。从队尾出队是为了符合性质2,从队头出队是为了符合队列的大小限制。
单调队列可以用来优化dp,将O(n)的复杂度降到O(1)。
本文参考:点击打开链接(http://blog.csdn.net/alongela/article/details/8227590)
0 0
- 单调栈 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- C#操作目录和文件
- 动态申请 相机权限
- git常用命令(四)
- 最小费用最大流模板
- Linux虚拟机的网络配置和系统配置
- 单调队列
- 练习题 No.21 邻接表
- 使用单例模式实现自己的HttpClient工具类
- 《ES6入门(第二版)》学习笔记【精华】(2)- 变量声明
- java 设计模式之模板方法模式
- 实例1:屏蔽鼠标右键
- 【Java】知乎:学习 JAVA,有什么书籍推荐?学习的方法和过程是怎样的?
- WanaCrypt0r 2.0 病毒
- 观察者模式