寻找数组中最小的K个数
方法一:建立大根堆
注意:priority_queue默认是less<>大根堆,如果使用greater<>就是小根堆。
priority_queue没有迭代器。
q.size();//队列的大小
q.empty();//队列是否为空
q.push();//插入队尾元素
q.pop();//删除队头元素
q.front();//得到队头元素
q.back();//得到队尾元素
#include
定义:priority_queue<Type, Container, Functional>
class Solution {
public:
vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
//最小的k个数
//建大小为k的大根堆
priority_queue<int,vector<int>,less<int>> pq;
for(int i=0;i<input.size();i++){
pq.push(input[i]);
if(pq.size()>k){
pq.pop();
}
}
vector<int> ret;
while(!pq.empty()){
ret.push_back(pq.top());
pq.pop();
}
return ret;
}
};