703 Kth Largest Element in a Stream
使用Python里面自带的heapq库,维护一个大小为K的优先队列(最小堆)
import heapq
class KthLargest(object):
def __init__(self, k, nums):
"""
:type k: int
:type nums: List[int]
"""
self.data = nums
self.k = k
self.size = len(nums)
heapq.heapify(self.data)
while self.size > k:
heapq.heappop(self.data) ## 将最小的弹出,最小堆的特点
self.size -= 1
def add(self, val):
"""
:type val: int
:rtype: int
"""
if self.size < self.k:
heapq.heappush(self.data, val)
self.size += 1
elif val > self.data[0]:
heapq.heappop(self.data)
heapq.heappush(self.data, val)
return self.data[0] ## 当前堆中最小的