博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指 Offer 59 - II. 队列的最大值
阅读量:4036 次
发布时间:2019-05-24

本文共 1324 字,大约阅读时间需要 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]

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/dui-lie-de-zui-da-zhi-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

Java

class MaxQueue {
Deque
main_que=new ArrayDeque<>(); Deque
assist_que=new ArrayDeque<>(); //存放当前main队列中元素的最大值 public MaxQueue() {
} public int max_value() {
if(main_que.isEmpty()) return -1; return assist_que.peek(); } public void push_back(int value) {
main_que.add(value); while(!assist_que.isEmpty() && assist_que.peekLast()<=value) {
int temp=assist_que.pollLast(); } assist_que.add(value); } public int pop_front() {
if(main_que.isEmpty()) return -1; int res=main_que.poll(); if(res==assist_que.peek()) res=assist_que.poll(); 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(); */
你可能感兴趣的文章
为什么读了很多书,却学不到什么东西?
查看>>
长文干货:如何轻松应对工作中最棘手的13种场景?
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
No.147 - LeetCode1108
查看>>
No.174 - LeetCode1305 - 合并两个搜索树
查看>>
No.175 - LeetCode1306
查看>>
No.176 - LeetCode1309
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
mysql:sql create database新建utf8mb4 数据库
查看>>
mysql:sql alter database修改数据库字符集
查看>>
mysql:sql drop table (删除表)
查看>>
mysql:sql truncate (清除表数据)
查看>>
scrapy:xpath string(.)非常注意问题
查看>>
yuv to rgb 转换失败呀。天呀。谁来帮帮我呀。
查看>>
yuv420 format
查看>>
YUV420只绘制Y通道
查看>>
yuv420 还原为RGB图像
查看>>
LED恒流驱动芯片
查看>>
驱动TFT要SDRAM做为显示缓存
查看>>
使用file查看可执行文件的平台性,x86 or arm ?
查看>>