zoukankan      html  css  js  c++  java
  • 剑指offer-面试题59_2-队列的最大值-队列

    /*
    题目:
    	定义一个含max函数的队列类,并实现pop_front()、push_back()、max()函数。
    */
    #include<iostream>
    #include<cstdlib>
    #include<stack>
    #include<string>
    #include<vector>
    #include<deque>
    
    using namespace std;
    
    template<typename T>class QueueWithMax{
    public:
        void pop_front(){
            if(myQueue.empty()) throw("queue is empty");
            if(myQueue.front().index == queueMax.front().index){
                queueMax.pop_front();
            }
            myQueue.pop_front();
        }
    
        void push_back(T number){
            while(!queueMax.empty() && myQueue.back().number <= number){
                queueMax.pop_back();
            }
            InternalData interalData = {number,index};
            myQueue.push_back(interalData);
            queueMax.push_back(interalData);
            index++;
        }
    
        T max() const{
            if(queueMax.empty()) throw ("queue is empty");
    
            return queueMax.back().number;
        }
    
    private:
        struct InternalData{
            T number;
            int index;
        };
    
        deque<InternalData> myQueue;
        deque<InternalData> queueMax;
        int index;
    };
    
    
    
    int main()
    {
        QueueWithMax<int> queue;
        queue.push_back(5);
        queue.push_back(3);
        queue.pop_front();
        cout<<queue.max();
    
    }
    

       

  • 相关阅读:
    (CS模式)大学计算机基础考试系统
    四叶草的祝福
    做人的小故事!
    前天晚上回到北京了
    人生活的三种状态
    松口气了!
    Mysql一些基础用法
    云计算随想
    对vector与deque插值与遍历的性能数据
    gdb命令的常用调试选项
  • 原文地址:https://www.cnblogs.com/buaaZhhx/p/12115106.html
Copyright © 2011-2022 走看看