【剑指Offer】 II. 队列的最大值
发布日期:2022-02-10 08:55:20
浏览次数:29
分类:技术文章
本文共 1077 字,大约阅读时间需要 3 分钟。
题目
请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。
若队列为空,pop_front 和 max_value 需要返回 -1
思路
再用一个队列来实现存最大值,因为只用一个int值来存最大值的话,出队的时候就不知道次大值了
这篇题解质量很高,易懂:
代码
class MaxQueue {public: queue q; deque dq; MaxQueue() { } int max_value() { if(dq.size() == 0) return -1; return dq.front(); } void push_back(int value) { q.push(value); if(dq.size() == 0){ dq.push_back(value); }else{ while(dq.size() != 0 && dq.back() < value){ dq.pop_back(); } dq.push_back(value); } } int pop_front() { if(q.size() == 0){ return -1; } int res = q.front(); if(dq.front() == res){ dq.pop_front(); } q.pop(); return res; }};/** * Your MaxQueue object will be instantiated and called as such: * MaxQueue* obj = new MaxQueue(); * int param_1 = obj->max_value(); * obj->push_back(value); * int param_3 = obj->pop_front(); */
转载地址:https://blog.csdn.net/hanmin822/article/details/106113272 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月25日 15时39分57秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
分布式事务 四种方案
2019-04-27
redis和spring整合
2019-04-27
iis6 和iis7s上整个网站重定向
2019-04-27
iis7 url重写和重定向
2019-04-27
XStream xml与javabean之间的互转
2019-04-27
Kubernetes基础:MacOS上设定Dashboard
2019-04-27
#力扣 MySQL196. 删除重复的电子邮箱 @FDDLC
2019-04-27
Seekbar 属性 记录
2019-04-27
textview设置独特字颜色和背景颜色
2019-04-27
背景+带边框(圆角)的textview怎么设置
2019-04-27
第二技能
2019-04-27
算法的设计
2019-04-27
JAVA Freemarker(9)---常见语法大全
2019-04-27
Java MyBatis(1)--- Generator 详解
2019-04-27
Java MyBatis(2)--- generatorConfig.xml详解与运行
2019-04-27
VueJS(5)---初步练习(5题)
2019-04-27
mysql(3)-- 修改root密码命令小结
2019-04-27
JQuery(3)--冒泡效果
2019-04-27
异常(2)-- UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/项目包名
2019-04-27
Android软键盘(1)---输入法界面管理(打开/关闭/状态获取)
2019-04-27