美文网首页
最小的K个数

最小的K个数

作者: Crazy_Bear | 来源:发表于2020-07-28 09:34 被阅读0次
  • 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
  • 可以使用优先队列,或者直接写出堆排序
  • C++ 代码(直接写出堆排序的代码)
class Solution {
public:
    void adjust(vector<int> &input, int index,int k){
        int key = input[index];
        int i = 0;
        for(i = (index+1)*2-1;i<=k;i=(i+1)*2-1)
        {
            if(i < k&& input[i+1]>input[i])
                i++;
            if(input[i]<key)
                break;
            input[index] = input[i];
            index = i;
        }
        input[index] = key;
    }
    vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
        
     /*   if(input.empty()||k==0||k>input.size()) return {};
       vector<int> p;
        priority_queue<int,vector<int>,greater<int>> q;
        vector<int>::iterator it;
        for(it=input.begin();it!=input.end();it++)
            q.push(*it);
        for(int i=0;i<k;i++){
            p.push_back(q.top());
            q.pop();
        }
           return p; */
        if(input.empty()||k==0||k>input.size()) return {};
        for(int i = (k/2-1); i>=0;i--){
            adjust(input,i,k-1);
        }
        for(int i = k;i <input.size();i++)
            if(input[i]<input[0]) {
                input[0]=input[i];
                adjust(input,0,k-1);
            }
        return vector<int> (input.begin(),input.begin()+k);
    }
      
};

相关文章

  • 算法-数组(三)

    最小的k个数 求子数组的最大和 把数组排成最小的数字 1.最小的k个数 问题描述:输入n个数字,找到数组中最小的k...

  • 最小的k个数

    问题描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是...

  • 最小的k个数

    输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3...

  • 最小的K个数

    题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1...

  • 最小的k个数

    参考: [1] https://www.nowcoder.com/questionTerminal/6a296eb...

  • 最小的K个数

    输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。

  • 最小的K个数

    题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是...

  • 最小的k个数

    问题:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,...

  • 最小的k个数

    题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1...

  • 最小的K个数

    import java.util.Scanner; public class GetLestNumbers { }

网友评论

      本文标题:最小的K个数

      本文链接:https://www.haomeiwen.com/subject/earjlktx.html