class KthLargest: def __init__(self, k: int, nums: List[int]): self.k = k hp = [] for x in nums: heapq.heappush(hp,x) if len(hp) > k: heappop(hp) self.hp = hp def add(self, val: int) -> int: heappush(self.hp,val) if len(self.hp)>self.k: heappop(self.hp) return self.hp[0]
时间: 2024-02-14 19:35:36 浏览: 67
dom.rar_site:www.pudn.com
这是一个实现 Kth Largest Element in a Stream 的类,使用了 Python 的 heapq 库(堆)。
在类的初始化方法 __init__ 中,首先将 nums 中的元素依次添加到一个最小堆 hp 中,如果 hp 中的元素数量超过了 k,则弹出堆顶元素,保持堆中只有 k 个元素。最后将 hp 赋值给 self.hp,表示存储了最大的 k 个元素。
在类的 add 方法中,将新加入的元素 val 添加到 hp 中,并且如果 hp 中的元素数量超过了 k,则弹出堆顶元素,保持堆中只有 k 个元素。最后返回堆顶元素,即为第 k 大的元素。
这个类可以在实现一些需要实时获取数据中的最大(或最小)值的场景中使用,例如实时监控一台服务器的 CPU 使用率,然后获取最高的前 10 个 CPU 使用率。
阅读全文