标签:pre tor 输出 最小 res push col 限制 ret
输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。
示例 1:
输入:arr = [3,2,1], k = 2
输出:[1,2] 或者 [2,1]
示例 2:
输入:arr = [0,1,2,1], k = 1
输出:[0]
限制:
0 <= k <= arr.length <= 1000
code:大根堆
class Solution { public: vector<int> getLeastNumbers(vector<int>& arr, int k) { if(arr.empty()||k<=0) return {}; else if(k>=arr.size()) return arr; vector<int> resArr(arr.begin(),arr.begin()+k); make_heap(resArr.begin(),resArr.end()); int arrLen=arr.size(); for(int i=k;i<arrLen;++i) { if(arr[i]<resArr[0]) { pop_heap(resArr.begin(),resArr.end()); resArr.pop_back(); resArr.push_back(arr[i]); push_heap(resArr.begin(),resArr.end()); } } return resArr; } };
标签:pre tor 输出 最小 res push col 限制 ret
原文地址:https://www.cnblogs.com/tianzeng/p/12304870.html