题解 | #最小的K个数#

最小的K个数

https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf

class Solution {
public:
    vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
        vector<int> res;
        //排除特殊情况 fast-template
        if(k == 0 || input.size() == 0)
            return res;
        priority_queue<int> q;
        //构建一个k个大小的堆
        for(int i = 0; i < k; i++)
            q.push(input[i]);
        for(int i = k; i < input.size(); i++){
             //较小元素入堆
            if(q.top() > input[i]){
                q.pop();
                q.push(input[i]);
            }
        }
        //堆中元素取出入vector
        for(int i = 0; i < k; i++){
            res.push_back(q.top());
            q.pop();
        }
        return res;
    }
};

优先队列

官方做法,了解了 堆 这里是优先队列(大顶堆) 基本操作算子 和 栈的算子的名字一样

全部评论

相关推荐

秋招不是要开始了吗,我都打算润了,看大家还在找不敢润了
一条从:因为不是人人都像佬一样有实习像我们这种二本仔秋招没有实习也是白忙活
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务