
剑指 Offer 59 - II. 队列的最大值
值范围:1 ≤ value ≤ 10^5
发布日期:2021-05-08 03:55:22
浏览次数:19
分类:精选文章
本文共 1438 字,大约阅读时间需要 4 分钟。
剑指 Offer 59 - II. 队列的最大值
问题描述
定义一个队列并实现函数 max_value
,用于获取队列中的最大值。要求 max_value
、push_back
和 pop_front
的均摊时间复杂度均为 O(1)。若队列为空,则 pop_front
和 max_value
需要返回 -1。
示例
示例 1
输入:["MaxQueue","push_back","push_back","max_value","pop_front","max_value"]
[[], [1], [2], [], [], []]
输出: [null, null, null, 2, 1, 2]
示例 2
输入:["MaxQueue","pop_front","max_value"]
[, [], []]
输出: [null, -1, -1]
约束条件
push_back
、pop_front
、max_value
的总操作数 ≤ 10,000解决方法
方法一:利用 deque 和 queue
我们可以通过组合 deque
和 queue
来实现 O(1) 的均摊时间复杂度。具体实现如下:
class MaxQueue {private: queue que; deque deq;public: MaxQueue() {} int max_value() { return deq.empty() ? -1 : deq.front(); } void push_back(int value) { que.push(value); // 保持 deque 的前缀最大 while (!deq.empty() && deq.back() < value) { deq.pop_back(); } deq.push_back(value); } int pop_front() { if (que.empty()) return -1; int val = 0; if (!deq.empty()) { val = deq.front(); deq.pop_front(); } que.pop(); return val; }};
实例说明
通过上述实现,push_back
、pop_front
和 max_value
的均摊时间复杂度均为 O(1)。具体实现细节如下:
push_back 方法:
- 将元素添加到
queue
。 - 同时,保持
deque
的前缀最大,确保deque
的前缀始终是最大的,避免重复元素。
pop_front 方法:
- 如果
queue
为空,返回 -1。 - 从
deque
中取出前缀元素,并从queue
中取出对应的元素。
max_value 方法:
- 检查
deque
是否为空,若为空返回 -1。 - 返回
deque
的前缀元素。
这种设计保证了在处理队列时,均摊时间复杂度为 O(1),满足题目的要求。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年03月21日 01时50分01秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
CODING 敏捷实战系列课第三讲:可视化业务分析
2019-03-06
工作动态尽在掌握 - 使用 CODING 度量团队效能
2019-03-06
CODING DevOps 深度解析系列第二课报名倒计时!
2019-03-06
数据结构第八节(图(下))
2019-03-06
基于Mustache实现sql拼接
2019-03-06
POJ 2260 Error Correction 模拟 贪心 简单题
2019-03-06
gRPC在 ASP.NET Core 中应用学习(一)
2019-03-06
@SuppressWarnings 用法
2019-03-06
看完你就明白的锁系列之锁的状态
2019-03-06
看完这篇操作系统,和面试官扯皮就没问题了
2019-03-06
我的价值观
2019-03-06
一文详解 Java 并发模型
2019-03-06
值类型与引用类型(中)
2019-03-06
MSSQL 2005 数据库变成可疑状态
2019-03-06
QBlog V2.5 源码开放下载(ASP.NET 番外系列之开端)
2019-03-06
秋色园引发CPU百分百命案的事件分析与总结
2019-03-06
安装jdk并配置环境变量
2019-03-06
稀疏数组
2019-03-06
js的严格模式
2019-03-06
idea的安装和无限期试用
2019-03-06