Kth Largest Element in a Stream
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.
Your KthLargest class will have a constructor which accepts an integer k and an integer array nums, which contains initial elements from the stream. For each call to the method KthLargest.add, return the element representing the kth largest element in the stream.
Example
int k = 3;
int[] arr = [4,5,8,2];
KthLargest kthLargest = new KthLargest(3, arr);
kthLargest.add(3); // returns 4
kthLargest.add(5); // returns 5
kthLargest.add(10); // returns 5
kthLargest.add(9); // returns 8
kthLargest.add(4); // returns 8
Solution
class KthLargest:
def __init__(self, k: int, nums: List[int]):
self.pool = nums
self.k = k
heapq.heapify(self.pool)
while len(self.pool)>k:
heapq.heappop(self.pool)
def add(self, val: int) -> int:
if len(self.pool)<self.k:
heapq.heappush(self.pool, val)
elif val>self.pool[0]:
heapq.heapreplace(self.pool, val)
return self.pool[0]
# Your KthLargest object will be instantiated and called as such:
# obj = KthLargest(k, nums)
# param_1 = obj.add(val)

博客围绕数据流中第k大元素展开,设计了一个KthLargest类。该类构造函数接收整数k和整数数组nums,每次调用add方法时,返回数据流中第k大的元素,并给出了具体示例及解决方案,使用Python实现。

5364

被折叠的 条评论
为什么被折叠?



