53 c++优先队列(priority_queue)用法详解 priority_queue的常见用法

 知识点:

c++优先队列(priority_queue)用法详解

push 插入元素到队尾 (并排序)

priority_queue的常见用法

priority_queue队列优先级的设置

基本数据类型优先级的设置

对于基础类型,一般是数字大的优先级高,对于字符,就是字典序越大,优先级越高。

priority_queue<int> q;
priority_queue<int,vector<int>,less<int>>;

两种定义方式等价

  • vector是承载堆的容器
  • less是比较类,less表示数字大优先级大,greater表示数字大,优先级小

思路

代码

class Solution {
public:
    vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
        vector<int> res;
        priority_queue<int> heap;
        if(input.size()==0||k==0||k>input.size())  return res;
        //if(input.size() < k || k <= 0) return res;
        for(auto x : input)
        {
            heap.push(x);
            if(heap.size() > k) heap.pop(); 
        }
        
        while(heap.size())
        {
            res.push_back(heap.top());
            heap.pop();
        }
        reverse(res.begin(),res.end());
        return res;
        
    }
};

猜你喜欢

转载自www.cnblogs.com/make-big-money/p/12317994.html