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] ## 当前堆中最小的

results matching ""

    No results matching ""