题解 | #最小的K个数#
最小的K个数
http://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf
最大堆解法,代码不多
vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
priority_queue<int> big_heap;
vector<int> res = {};
priority_queue<int> big_heap;
vector<int> res = {};
if(k == 0){
return res;
}
for(int a : input){
if(big_heap.size() < k){
big_heap.push(a);
}else if(big_heap.size() == k){
if(big_heap.top() > a){
big_heap.pop();
big_heap.push(a);
}
}
}
while(!big_heap.empty()){
res.push_back(big_heap.top());
big_heap.pop();
}
return res;
}
return res;
}
for(int a : input){
if(big_heap.size() < k){
big_heap.push(a);
}else if(big_heap.size() == k){
if(big_heap.top() > a){
big_heap.pop();
big_heap.push(a);
}
}
}
while(!big_heap.empty()){
res.push_back(big_heap.top());
big_heap.pop();
}
return res;
}