解析
使用优先队列(大根堆)做法
当插入优先队列的个数>k时,弹出队列中最大数
时间复杂度
O(nlogk+k)
C++ 代码
class Solution {
public:
vector<int> getLeastNumbers_Solution(vector<int> input, int k) {
priority_queue<int> heap;
for(auto i:input){
heap.push(i);
if(heap.size()>k)
heap.pop();
}
vector<int> res;
while(heap.size()){
res.push_back(heap.top());
heap.pop();
}
reverse(res.begin(),res.end());
return res;
}
};