题解 | #最小的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 文章被收录于专栏
记录自己的解题思路, 欢迎评价