703. Kth Largest Element in a Stream
LeetCode 703. Kth Largest Element in a Stream
Description
Design a class to find the kth
largest element in a stream. Note that it is the kth
largest element in the sorted order, not the kth
distinct element.
Implement KthLargest
class:
KthLargest(int k, int[] nums)
Initializes the object with the integerk
and the stream of integersnums
.int add(int val)
Returns the element representing thekth
largest element in the stream.
Example 1:
Constraints:
1 <= k <= 104
0 <= nums.length <= 104
-104 <= nums[i] <= 104
-104 <= val <= 104
At most
104
calls will be made toadd
.It is guaranteed that there will be at least
k
elements in the array when you search for thekth
element.
Tags
Heap, Design
Solution
Build a heap with capacity of k
, where the root is the minimum element, to store the top-k largest elements in the given array.
Constructor: we keep pushing elements into the heap until the size of the heap is
k
. Then, we compare the current element with the root of the heap, if the root is smaller, we pop an element from the heap and push the current one into it.Add: perform the same logic inside the for-loop of the constructor, and return the root of the heap.
Complexity
Time complexity
Initialization:
Add:
Space complexity:
Code
Last updated
Was this helpful?