用优先级队列来模拟一个k个元素的大根堆。
class Solution
{
public:
vector<int> getLeastNumbers(vector<int>& arr, int k)
{
if(k==0)
{
vector<int> re;
re.resize(0);
return re;
}
priority_queue<int> q;
for(int i=0;i<arr.size();i++)
{
if(i<k)
{
q.push(arr[i]);
}
else
{
int temp=q.top();
if(arr[i]<temp)
{
q.pop();
q.push(arr[i]);
}
}
}
vector<int> re;
int i=k;
while(i!=0)
{
int temp=q.top();
re.push_back(temp);
q.pop();
i--;
}
return re;
}
};