NC119 最小的K个数 牛客

描述

给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。如果K>数组的长度,那么返回一个空的数组
输入:
[4,5,1,6,2,7,3,8],4 
返回值:
[1,2,3,4]

 

class Solution {
public:
    vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
      priority_queue<int,vector<int>,less<int> > Q;  
      priority_queue<int,vector<int>,greater<int> > Q2;
      vector<int>  res;
      int l=input.size();
      for(int i=0;i<l;i++)
      {
          Q.push(input[i]);
          if (Q.size()>k) Q.pop();
      }
        
        if (Q.size()<k) return res;
          else 
          {
              int i=0;
              while(!Q.empty())
              {
                  Q2.push(Q.top());
                  Q.pop();
              }
              while(!Q2.empty())
              {
                  res.push_back(Q2.top());
                  Q2.pop();
              }
              return res;
          }
    }
};

 

posted on 2021-06-01 20:27  Yxter  阅读(56)  评论(0编辑  收藏  举报

导航