解题思路:
使用一个最小堆来存储数据,在C++中,对应是#include<queue>头文件中的priority_queue。
程序逻辑:KthLargest类初始化的时候,先根据nums容器中的数,生成包含k个数的最小堆;然后在每一次add操作的时候,更新最小堆,并返回根节点,即最上面的元素。
C++中STL里的priority_queue用法可参考网址:https://blog.csdn.net/xiaoquantouer/article/details/52015928
class KthLargest {
public:
priority_queue<int, vector<int>, greater<int>> pq;
int n;
KthLargest(int k, vector<int>& nums) {
n = k;
//构造函数中,先建好最小堆
for(int i = 0; i < nums.size(); i++){
pq.push(nums[i]);
if(pq.size() > k) pq.pop();
}
}
int add(int val) {
//更新最小堆
pq.push(val);
if(pq.size() > n) pq.pop();
return pq.top();
}
};
/**
* Your KthLargest object will be instantiated and called as such:
* KthLargest* obj = new KthLargest(k, nums);
* int param_1 = obj->add(val);
*/