最小的k个数

注意:最小的k个数,没有要求最后输出的k个数的顺序。

思路:

使用优先队列,默认降序(小顶堆),队列长度维持在k。

 1 class Solution {
 2 public:
 3     vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
 4         int len=input.size();
 5         if(len<k || k<=0) return res;
 6         for(int i=0;i<len;i++){
 7             if(q.size()<k) q.push(input[i]);
 8             else if(input[i]<q.top()){
 9                 q.push(input[i]);
10                 q.pop();
11             }
12         }
13         while(!q.empty()){
14             res.push_back(q.top());
15             q.pop();
16         }
17         return res;
18     }
19 private:
20     priority_queue<int> q;//默认降序
21     vector<int> res;
22 };

 

posted @ 2019-07-10 09:34  Austin_anheqiao  阅读(125)  评论(0编辑  收藏  举报