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()这个条件占了绝大部分的样例,所以出错了很难检查到。

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

    部分资料直接复制网络中其他文章,仅供个人参考学习
  • 相关阅读:
    去除图片水印
    CALayer
    UIKit Animation
    CoreAnimation
    3DTouch
    键盘事件
    weChat聊天发送图片带有小尖角的实现
    webView 和 js 交互 之 屏蔽 样式
    iOS socket编程
    tableView尾部多处一部分空白高度
  • 原文地址:https://www.cnblogs.com/decq/p/11994991.html
Copyright © 2011-2022 走看看