题目链接:https://www.acwing.com/problem/content/description/49/
题目如下:
class Solution {
public:
vector<int> getLeastNumbers_Solution(vector<int> input, int k) {
priority_queue<int> que; //priority_queue为大顶堆,如果要求小顶堆,则reverse一下即可
for(auto e:input){
if(que.size()<k||que.top()>e) que.push(e);
if(que.size()>k) que.pop();//确保堆中较大的数能自己弹出
}
vector<int> res;
while(que.size()){
res.push_back(que.top());
que.pop();
}
reverse(res.begin(),res.end());//由于是大顶堆,得到堆中内容后需reverse一下
return res;
}
};