最小的k个数
Posted tianzeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最小的k个数相关的知识,希望对你有一定的参考价值。
输入整数数组 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; } };
以上是关于最小的k个数的主要内容,如果未能解决你的问题,请参考以下文章