解题思路
维护一个k大小的大顶堆,如果当前堆的size>k,则弹出
代码
class Solution
{
public:
vector<int> getLeastNumbers(vector<int>& arr, int k)
{
priority_queue<int, vector<int>, less<int>> q;//大顶堆
//priority_queue<int, vector<int>, greater<int>> q;//小顶堆
for (vector<int>::iterator it = arr.begin(); it != arr.end(); it++)
{
q.push(*it);//堆的size<=k,则加入到堆中
if(q.size()>k) q.pop();
}
vector<int> res;
while (!q.empty())
{
res.push_back(q.top());
q.pop();
}
return res;
}
};