题目描述
输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。
C++
class Solution {
public:
vector<int> getLeastNumbers(vector<int>& arr, int k) {
make_heap(arr.begin(),arr.end(),greater<int>()); //创建最小堆
vector<int> out; //返回向量
//取最小的k个数
for (int i =1;i<=k;i++){
pop_heap(arr.begin(),arr.end(),greater<int>());
out.push_back(arr.back());
arr.pop_back();
}
return out;
}
};