使用最大堆:时间复杂度nlogk
注意:k<=0也要判断
class Solution {
public:
vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
if(input.size()<=0||input.size()<k||k<=0)
return vector<int> ();
vector<int> res(input.begin(),input.begin()+k);
make_heap(res.begin(),res.end());
for(int i=k;i<input.size();i++)
{
if(input[i]<res[0])
{
pop_heap(res.begin(),res.end());
res.pop_back();
res.push_back(input[i]);
push_heap(res.begin(),res.end());
}
}
sort_heap(res.begin(),res.end());
return res;
}
};