解題思路
維護一個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;
}
};