zoukankan      html  css  js  c++  java
  • 剑指offer——最小的k个数

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

    C++代码:

    class Solution {
    public:
        //使用优先级队列
        vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
            vector<int> res;
            if(input.size()<k) return res;
            if(input.size()==k) return input;
            priority_queue<int, vector<int>, greater<int>> Q;
            for(int i=0;i<input.size();i++)
                Q.push(input[i]);
            for(int i = 0;i<k;i++)
            {
                res.push_back(Q.top());
                Q.pop();
            }
            return res;
        }
    };
    class Solution {
    public:
      //使用STL的sort排序
        vector<int> GetLeastNumbers_Solution2(vector<int> input, int k) {
            vector<int> res;
            if(input.size()<k) return res;
            if(input.size()==k) return input;
            sort(input.begin(),input.end());
            for(int i=0;i<k;i++)
                res.push_back(input[i]);
             
            return res;
        }
    };
    //堆排序思想
    class Solution {
    private:
         void heapSort(vector<int> &input, int root, int end){
            for(int j = end -1; j >= root; j --){
                int parent = (j + root -1)/2;
                if(input[parent] > input[j]){
                    int temp = input[j];
                    input[j] = input[parent];
                    input[parent] = temp;
                }
            }  
         }
         
    public:
        vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
            vector<int> result ;
            if(k > input.size()) return result;
            for(int i = 0; i < k ; i ++){
                heapSort(input,i,input.size());
                result.push_back(input[i]);
            }
            return result;
        }
    };
    天上我才必有用,千金散尽还复来!
  • 相关阅读:
    Mysql注入绕过姿势
    轻松入侵我学校网站
    华科机考:矩阵转置
    浙大patB习题的一点总结
    链表的一些基本操作
    关于C中函数传参的一点理解
    Java与JavaScript中判断两字符串是否相等的区别
    Jsp中out.println()与System.out.println()的区别
    eclipse背景主题
    Kruskal算法的简单实现
  • 原文地址:https://www.cnblogs.com/lutaishi/p/13436289.html
Copyright © 2011-2022 走看看