最小的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 };