703. Kth Largest Element in a Stream
Problem
Design a class to find the
Implement KthLargest class:
- KthLargest(int k, int[] nums) Initializes the object with the integer k and the stream of integers nums.
- int add(int val) Returns the element representing the
largest element in the stream.
Example 1:
Input
["KthLargest", "add", "add", "add", "add", "add"]
[[3, [4, 5, 8, 2]], [3], [5], [10], [9], [4]]
Output
[null, 4, 5, 5, 8, 8]
Explanation
KthLargest kthLargest = new KthLargest(3, [4, 5, 8, 2]);
kthLargest.add(3); // return 4
kthLargest.add(5); // return 5
kthLargest.add(10); // return 5
kthLargest.add(9); // return 8
kthLargest.add(4); // return 8
Constraints:
- At most
calls will be made to add. - It is guaranteed that there will be at least k elements in the array when you search for the
element.
Code
215. Kth Largest Element in an Array
注意题意
2,3,4,5,5,8
8 - 第1大
5 - 第2大
5 - 第3大
4 - 第4大
class KthLargest {
PriorityQueue<Integer> queue;
int k;
public KthLargest(int k, int[] nums) {
this.k = k;
// 维持k的大小 也就保证了queue中存放了前k个最大值
queue = new PriorityQueue<>();
for (int num : nums) {
queue.offer(num);
if (queue.size() > k) {
queue.poll();
}
}
}
public int add(int val) {
queue.offer(val);
if (queue.size() > k) {
queue.poll();
}
return queue.peek();
}
}
/**
* Your KthLargest object will be instantiated and called as such:
* KthLargest obj = new KthLargest(k, nums);
* int param_1 = obj.add(val);
*/
按 <- 键看上一题!
702. Search in a Sorted Array of Unknown Size
按 -> 键看下一题!
704. Binary Search