Kth Largest Element in a Stream
Easy
HeapDesign
Problem
Design a class KthLargest. Constructor takes (k, nums). add(val) returns the kth-largest element after adding val.
Example 1
Input: k=3, nums=[4,5,8,2]; add(3)
Output: 4
Constraints
- 1 ≤ k ≤ 10⁴
Approach — Heaps / Top-K
This is a Heaps / Top-K problem. The idea: use a heap so the min, max, or top-k element stays reachable in O(log n) per operation. Work through the reference code below line by line, then re-derive it yourself in the editor — that's how the pattern sticks.
Complexity: O(n log k) time.
Solution code
Python
import heapq
class KthLargest:
def __init__(self, k, nums):
self.k = k
self.heap = nums[:]
heapq.heapify(self.heap)
while len(self.heap) > k:
heapq.heappop(self.heap)
def add(self, val):
heapq.heappush(self.heap, val)
if len(self.heap) > self.k:
heapq.heappop(self.heap)
return self.heap[0]
Java
class KthLargest {
private final PriorityQueue<Integer> heap;
private final int k;
public KthLargest(int k, int[] nums) {
this.k = k;
this.heap = new PriorityQueue<>();
for (int num : nums) {
add(num);
}
}
public int add(int val) {
heap.offer(val);
if (heap.size() > k) {
heap.poll();
}
return heap.peek();
}
}
class Solution {}
Practice it
Reading a solution isn't the same as being able to write it under pressure. Open this problem in the in-browser editor, hide the solution, and solve it from scratch — your code runs against real test cases instantly.
Solve Kth Largest Element in a Stream interactively → ← All solutions