ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Hot-295 数据流的中位数

Hot-295 数据流的中位数

解法:使用 大根堆 + 小根堆, 同时保证两者数量差1

import heapq class MedianFinder: def __init__(self): # 大根堆 self.left = [] # 小根堆 self.right = [] def addNum(self, num: int) -> None: heapq.heappush(self.left,-num) # 把left的最大值给到right heapq.heappush(self.right,-heapq.heappop(self.left)) # 如果right的数量过多,平衡: if len(self.right) > len(self.left): heapq.heappush(self.left,-heapq.heappop(self.right)) def findMedian(self) -> float: if len(self.right) == len(self.left): return (self.right[0] - self.left[0]) / 2 else: return -self.left[0]
返回列表