- 数据流中的第 K 大元素
设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。
请实现 KthLargest 类:
KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。
int add(int val) 将 val 插入数据流 nums 后,返回当前数据流中第 k 大的元素。
class KthLargest {
public:
priority_queue<int, vector<int>, greater<int>> q;
int num;
int cur;
KthLargest(int k, vector<int>& nums) {
num = k;
cur = 0;
int size = nums.size();
for (int i = 0; i < size; i++) {
if (cur < num) {
q.push(nums[i]);
cur++;
} else {
int tmp = q.top();
// cout << tmp << endl;
if (tmp < nums[i]) {
q.pop();
q.push(nums[i]);
}
}
}
}
int add(int val) {
if (cur < num) {
q.push(val);
cur++;
} else {
int tmp = q.top();
// cout << tmp << endl;
if (tmp < val) {
q.pop();
q.push(val);
}
}
return q.top();
}
};
/**
* Your KthLargest object will be instantiated and called as such:
* KthLargest* obj = new KthLargest(k, nums);
* int param_1 = obj->add(val);
*/