Solution 1
Python
import heapq
class MedianFinder:
def __init__(self):
self.left = []
self.right = []
def addNum(self, num: int) -> None:
if self.left == [] or num <= -self.left[0]:
heapq.heappush(self.left, -num)
else:
heapq.heappush(self.right, num)
if len(self.left) > len(self.right) + 1:
heapq.heappush(self.right, -heapq.heappop(self.left))
if len(self.right) > len(self.left):
heapq.heappush(self.left, -heapq.heappop(self.right))
def findMedian(self) -> float:
if len(self.left) == len(self.right):
return (-self.left[0] + self.right[0]) / 2.0
return -self.left[0]
# Example usage:
# obj = MedianFinder()
# obj.addNum(num)
# param_2 = obj.findMedian()