zoukankan      html  css  js  c++  java
  • 最小的K个数

    题目描述

    输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
    解答:
    用最简单的方法,优先队列
    #include <queue>
    class Solution {
    public:
        vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
            vector<int> res;
            if(input.empty()==true || k<=0 || k>input.size()) return res;
            priority_queue<int,vector<int>, greater<int> > q; 
            for(int i=0;i<input.size();i++) q.emplace(input[i]);
            for(int i=0;i<k;i++){
                res.emplace_back(q.top());
                q.pop();
            }
            return res;
        }
    };
    //堆
    

    这道题比较坑的一点是input.empty()==true || k<=0 || k>input.size()这个条件占了绝大部分的样例,所以出错了很难检查到。

    比较好的思路是维护一个固定长度的最小堆。

    部分资料直接复制网络中其他文章,仅供个人参考学习
  • 相关阅读:
    iOS刨根问底-深入理解RunLoop
    深入理解RunLoop
    Core Graphics框架 利用Quartz 2D绘图
    经济
    次贷危机的原因
    次级抵押贷款
    信用评级
    信用
    理解UIView的绘制-孙亚洲
    二级域名
  • 原文地址:https://www.cnblogs.com/decq/p/11994991.html
Copyright © 2011-2022 走看看