# Find [[median|Median]] in Datastream ## Solution 1: Two [[heap]]s ```python def __init__(self): self.hi = [] # min heap self.lo = [] # max heap def addNum(self, num: int) -> None: # ensures len(self.hi) >= len(self.lo) if len(self.hi) == len(self.lo): heappush(self.lo, -num) heappush(self.hi, -heappop(self.lo)) else: heappush(self.hi, num) heappush(self.lo, -heappop(self.hi)) def findMedian(self) -> float: if len(self.hi) == len(self.lo): return (self.hi[0] - self.lo[0]) / 2 else: return self.hi[0] ```