思路
topK问题想到使用堆数据结构解决, 最小的K个数要维护一个大根堆,大根堆的元素有K个
class Solution {
public:
vector<int> getLeastNumbers(vector<int>& arr, int k) {
priority_queue<int> q;
vector<int> res;
if(k == 0) return res;
for (int i = 0; i < k; ++i) q.push(arr[i]);
for (int i = k; i < arr.size(); ++i) {
if (q.top() > arr[i]) {
q.pop();
q.push(arr[i]);
}
}
for (int i = 0; i < k; ++i) {
res.push_back(q.top());
q.pop();
}
return res;
}
};