单调队列
概念:什么是单调队列
单调队列,顾名思义就是单调的队列,那有些人就说了 “那你这单调队列和 priority_queue
有什么区别” 区别可大了,首先 priority_queue
是一个堆,其次,单调队列维护单调性的方式可不是把里面的东西排序,而是直接弹出元素。
单调队列的好处就是可以在 $O(n)$ 的时间内知道一个数组所有长度为一个固定值的子区间中的极值。
模拟:单调队列如何维护单调性
假设现在我们有一个序列:
我们要求他所有长度为 $3$ 的子区间中的最大值,现在我们就假设我们只有一个队列,看看如何得出我们要的答案
1 | /* |
自此我们大概了解了这个单调队列的规则。
实现:对于刚刚思路的代码化
1 | // 基础的函数 |
实践:单调队列基本例题
点击下面标签查看相关题目喵!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 祝馀宫!
评论