知识点:
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; } };