单调队列和单调栈其实差不多,就是维护一个区间单调的队列或者是栈,单调队列就是我们所说的大顶堆小顶堆,
//升序队列 小顶堆 great 小到大
priority_queue <int,vector<int>,greater<int> > pri_que;
//降序队列 大顶堆 less 大到小 默认
priority_queue <int,vector<int>,less<int> > pri_que;
347. 前 K 个高频元素
首先需要桶排序,看看谁出现次数多,然后构建小顶堆,因为进入一个元素,就排出去一个,如果是大顶堆,剩下的就是小的数,如果是小顶堆,剩下的就是大的数,
class Solution {
public:
class mycomparison {
public:
bool operator()(const pair<int, int>& lhs, const pair<int, int>& rhs) {
return lhs.second > rhs.second;
}//重载运算符
};
vecto