600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 面试题40. 最小的k个数

面试题40. 最小的k个数

时间:2019-07-03 06:04:44

相关推荐

面试题40. 最小的k个数

面试题40. 最小的k个数

思路:这题应为数据量很小,所以直接sort即可。如果数据去到10**9这种数据量的话,需要用到优先队列,遍历一次数组即可O(n+logn)

笔记:优先队列priority(int, vector<int>, less<int> > q;//从大到小

class Solution {public:vector<int> getLeastNumbers(vector<int>& arr, int k) {vector<int> res;if(k==0) return res;priority_queue<int, vector<int>, less<int> > q;//从大到小(数组逐渐变小)//遍历数组次for(int i=0;i<arr.size();i++){if(i<k) q.push(arr[i]);//先放k个else if(arr[i]<q.top()){ //与优先队列最大的那个比较q.pop();q.push(arr[i]);}}//输出结果for(int i=0;i<k;i++){res.push_back(q.top());q.pop();}return res;}};

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。