# -*- coding:utf-8 -*-
class Solution:
def __init__(self) -> None:
self.small_heap = []
self.large_heap = []
def Insert(self, num):
# write code here
import heapq
if len(self.small_heap) < len(self.large_heap):
# 先将num加入到large中
heapq.heappush(self.large_heap, num)
# 将large中的最小值取出,加入到small中
heapq.heappush(self.small_heap, -heapq.heappop(self.large_heap))
else:
# 先将num加入到small中
heapq.heappush(self.small_heap, -num)
# 将small中的最大值加入到large中
heapq.heappush(self.large_heap, -heapq.heappop(self.small_heap))
def GetMedian(self):
if len(self.small_heap) == len(self.large_heap):
# 返回小根堆的最大值和大根堆的最小值的平均数
return (-self.small_heap[0] + self.large_heap[0]) / 2
else:
# 返回large中最小值
return self.large_heap[0]