【剑指Offer】59 - II. 队列的最大值
发布日期:2021-06-29 19:47:17
浏览次数:2
分类:技术文章
本文共 1360 字,大约阅读时间需要 4 分钟。
题目:请定义一个队列并实现函数 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]限制:
1 <= push_back,pop_front,max_value的总操作数 <= 10000
1 <= value <= 10^5答案:
class MaxQueue { //一个正常队列,一个优先队列 private Queuequeue; private Queue minHeap; public MaxQueue() { queue = new LinkedList<>(); minHeap = new PriorityQueue<>(new Comparator () { @Override public int compare(Integer o1, Integer o2) { return o2 - o1; } }); } public int max_value() { if(minHeap.isEmpty()) return -1; return minHeap.peek(); } public void push_back(int value) { queue.add(value); minHeap.add(value); } public int pop_front() { if(queue.isEmpty()) return -1; minHeap.remove(queue.peek()); int num = queue.poll(); return num; }}/** * 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://darkness.blog.csdn.net/article/details/115656673 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月22日 20时51分16秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C#中使用XmlWriter写入XML数据
2019-04-30
C#鼠标按住标题移动时移动窗体
2019-04-30
存储过程中调用EXECUTE IMMEDIATE的“权限不足”问题
2019-04-30
G711 G723 G729线路占多少带宽问题
2019-04-30
针对文本文件单行连续多字符内容根据分隔符号转多行方法
2019-04-30
OPPO A37M刷机
2019-04-30
通过代理使用远程桌面(Mstcs)
2019-04-30
XP下安装VS2003 ,安装先决条件IIS后,提示未安装frontpage服务器扩展
2019-04-30
linux中的mail命令
2019-04-30
如何排除网络故障1:常见的问题和解决这些问题的工具
2019-04-30
Bypass交换机-确保关键链路的高可用性 (HA)
2019-04-30
如何实现网络端到端监控
2019-04-30
如何排除网络故障2:解决网络取证问题
2019-04-30
虹科方案|虹科Vdoo安全平台-D-Link路由器的安全漏洞
2019-04-30
弘辽科技:怎么在淘宝上开公益店铺?怎么设置公益宝贝?
2019-04-30
弘辽科技:做母亲、还是创业?我做了一个双项选择题
2019-04-30
弘辽科技:夜经济 偷偷长成36万亿!
2019-04-30
弘辽科技:从导购、电商到直播社区,蘑菇街为何做不好电商生意?
2019-04-30