diff --git a/java/kth-largest-element-in-a-stream.java b/java/kth-largest-element-in-a-stream.java new file mode 100644 index 0000000..e42bd4d --- /dev/null +++ b/java/kth-largest-element-in-a-stream.java @@ -0,0 +1,27 @@ +import java.util.PriorityQueue; + +class KthLargest { + int k; + private PriorityQueue heap; + + public KthLargest(int k, int[] nums) { + this.k = k; + heap = new PriorityQueue<>(k + 1); + + for (var num : nums) { + add(num); + } + } + + public int add(int val) { + if (heap.size() < k || heap.peek() < val) { + heap.add(val); + + if (heap.size() > k) { + heap.remove(); + } + } + + return heap.peek(); + } +}