随笔 - 165,  文章 - 0,  评论 - 4,  阅读 - 18023

题目:

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;
    }
};
posted on   孜孜不倦fly  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示