题解 | #最小的K个数#

最小的K个数

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

#include <queue>
#include <type_traits>
#include <vector>
class Solution {

public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 
     * @param input int整型vector 
     * @param k int整型 
     * @return int整型vector
     */
    vector<int> GetLeastNumbers_Solution(vector<int>& input, int k) {
        // write code here
        vector<int> ret(k);
        if (k == 0 || k > input.size()) return ret;
	    // 建立一个优先队列,默认是大根堆
        priority_queue<int, vector<int>> queue;

        for (int val: input) {
            if (queue.size() < k) {
                queue.push(val);
            } else {
                if (val < queue.top()) {
                    queue.pop();
                    queue.push(val);
                }
            }
        }

        while (!queue.empty()) {
            // ret.insert(ret.begin(),queue.top());
            ret[k-1] = queue.top();
            queue.pop();
            k = k-1;
        }
        return ret;

        
    }
};

note_coding 文章被收录于专栏

记录自己的解题思路, 欢迎评价

全部评论

相关推荐

10-16 15:48
算法工程师
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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