题目:
class MaxQueue {
public:
deque<int> que1; //使用两个双端队列(deque和queue不一样,用deque就行)
deque<int> que2;
MaxQueue() {
}
int max_value() {
return que2.empty()?-1:que2.front(); //不可缺少对空栈的判断
}
void push_back(int value) {
que1.push_back(value);
while(!que2.empty()&&que2.back()<value){ //que2维护为单调递减栈,栈头为最大值
que2.pop_back();
}
que2.push_back(value);
}
int pop_front() {
if(que2.empty())return -1; //不可缺少对空栈的判断
int max=que1.front();
que1.pop_front();
if(que2.front()==max){ //如果que1中的弹出值等于que2栈头,那么que2才弹出栈头
que2.pop_front();
}
return max;
}
};
分类:
算法编程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具