题解 | #最小的K个数#

最小的K个数

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

利用优先队列的堆容器

class Solution {
public:
    vector<int> GetLeastNumbers_Solution(vector<int> input, int k) 
    {
        vector<int> res;
        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;

    }
};
全部评论

相关推荐

安徽省移动公司 IT部门 一年税前14w
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务