题解 | #最小的K个数#
最小的K个数
https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf
利用优先队列的堆容器
class Solution {
public:
vector<int> GetLeastNumbers_Solution(vector<int> input, int k)
{
vector<int> res;
if(k == 0 || input.size()==0){
return res;
}
priority_queue<int> q;
//构建k大小的堆
for(int i=0;i<k;i++){
q.push(input[i]);
}
//较小元素入堆
for(int i=k;i<input.size();i++){
if(q.top()>input[i]){
q.pop();
q.push(input[i]);
}
}
//堆中元素取出vector
for(int i=0;i<k;i++){
res.push_back(q.top());
q.pop();
}
return res;
}
};