【剑指offer】59 - II. 队列的最大值
剑指 Offer 59 - II. 队列的最大值
知识点:队列;单调
题目描述
请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。
若队列为空,pop_front 和 max_value 需要返回 -1
示例
解法一:双端队列+单调
当一个元素进入队列时,它前面所有比它小的元素就不会再对答案产生影响了
比如数字序列 1 1 1 1 2,那么在第一个数字 2 被插入后,数字 2 前面的所有数字 1 将不会对结果产生影响。因为如果数字 1 在队列中,那么数字 2 必然也在队列中(先进先出),使得数字 1 对结果没有影响。
所以当从队列尾部插入元素时,可以把没有影响的,也就是所有比要插入元素小的数字都取出来,使得队列中只保留对结果有影响的数字,也就是要求队列单调递减;
在元素入队时,判断当前元素和队尾的关系,把所有小于当前值的队里元素都移除;
所以可以在添加和删除的时候采用普通的队列;
在取出最大值的时候采用双端队列;双端队列维持递减,所以每次取出队首元素即可;
__EOF__

本文作者:Curryxin
本文链接:https://www.cnblogs.com/Curryxin/p/15130459.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Curryxin/p/15130459.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了