题解 | #最小的K个数#

最小的K个数

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

#include <queue>
class Solution {
public:
    vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
        /*
        vector<int> ret;
        if(k==0||k>input.size()){
            return ret;
        }

        sort(input.begin(),input.end());
        ret.assign(input.begin(), input.begin()+k);
        return ret;

        */
        vector<int> ret;
        if(k==0||k>input.size()){
            return ret;
        }

        priority_queue<int,vector<int>> heapK;
        //iterate the array,if the number of elements in the array is smaller than k,push
        //greater,compare the largest number in k with the current element,choose the smaller
        

        for(const int CurVal:input){
            if(heapK.size()<k){
                heapK.push(CurVal);
            }
            else if(CurVal<heapK.top()){
                heapK.pop();
                heapK.push(CurVal);
            }
        }
        while(!heapK.empty()){
            ret.push_back(heapK.top());
            heapK.pop();
        }

        return ret;


    }
};

·大小为k的堆插入复杂度为 log2 k

·

全部评论

相关推荐

面向对象的火龙果很爱...:去吃一顿炸鸡就走
点赞 评论 收藏
分享
看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗?&nbsp;那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
你找工作的时候用AI吗?
点赞 评论 收藏
分享
后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
无实习如何秋招上岸
点赞 评论 收藏
分享
怎么起名字:早知道就不读书了,害得我送外卖还得扶眼镜
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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