/*
* @lc app=leetcode id=703 lang=javascript
*
* [703] Kth Largest Element in a Stream
*/
// @lc code=start
class KthLargest {
minHeap = null
k = 0
constructor(k, nums) {
this.minHeap = new MinPriorityQueue();
this.k = k;
nums.forEach(n => {
this.minHeap.enqueue(n);
});
}
add(val) {
// put val into min heap
this.minHeap.enqueue(val);
// pop min element if min heap's size is greater than k
while (this.minHeap.size() > this.k) {
this.minHeap.dequeue();
}
return this.minHeap.front().element;
}
}
/**
* Your KthLargest object will be instantiated and called as such:
* var obj = new KthLargest(k, nums)
* var param_1 = obj.add(val)
*/
// @lc code=end
703 Kth Largest Element in a Stream