最小的k个数

来源:互联网 发布:用别人淘宝店铺引流量 编辑:程序博客网 时间:2024/05/21 08:43

题目描述

输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
先设置一个数组将新数组存放k个数,然后排序,最大值与原数剩余的比较,大了 删除插入新的,小了不变,还可以选择用multiset<int,greater <int>>这个是自动排序的


class Solution {

public:
    vector<int> GetLeastNumbers_Solution(vector<int> input, int k) 
    {
        vector<int> ans;
        int len=input.size();
        if(k<1||len<k) return ans;
        for(int i=0;i<len;i++)
            {
            if(ans.size()<k)
                {
                 ans.push_back(input[i]);
                 if(ans.size()==k)
                 sort(ans.begin(),ans.end());
                }
               
             else{
                 
                  if(ans[k-1]>input[i])
                     {
                      ans[k-1]=input[i];
                      sort(ans.begin(),ans.end());
                     }
                 
                 }
            
            }
        return ans;
    }
};
0 0