单调队列

求数组中前k个元素的最大值
class FRISTQUEUE{
public:
    int k;
    deque<int>q;
    deque<int>id;
    void push(int x,int tid){
        while(!q.empty()&&q.back()<x){
            q.pop_back();
            id.pop_back();
        }
        q.push_back(x);
        id.push_back(tid);
        if(tid-id.front()>=k){
            q.pop_front();
            id.pop_front();
        }
    }
    int front(){
        return q.front();
    }
};
posted @ 2021-04-05 13:31  yesuweiYYYY  阅读(31)  评论(0编辑  收藏  举报