这里思路是堆排序,而且是小根堆。C++中包含在头文件<queue>的priority_queue本质就是堆排序实现的。其中priority_queue函数原型是
priority_queue<Type, Container, Functional>
class KthLargest { private: priority_queue<int, vector<int>, greater<int>> heap; int size; public: KthLargest(int k, vector<int> nums) { size=k; for (int i = 0; i < nums.size(); i++){ heap.push(nums[i]); if(heap.size()>k) heap.pop(); } } int add(int val) { heap.push(val); if(heap.size()>size) heap.pop(); return heap.top(); } }; /** * Your KthLargest object will be instantiated and called as such: * KthLargest obj = new KthLargest(k, nums); * int param_1 = obj.add(val); */
参考:https://www.cnblogs.com/paulprayer/p/9855940.html
原文:https://www.cnblogs.com/wtt1996/p/10554779.html