From 08fac51bf4dbaa3bbc0bfd66d8aea00e4f7b1c84 Mon Sep 17 00:00:00 2001 From: Shaik Sajid Hussain <93574244+shaiksajidhussain@users.noreply.github.com> Date: Mon, 6 Oct 2025 02:42:24 +0530 Subject: [PATCH] Create addNum --- addNum | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 addNum diff --git a/addNum b/addNum new file mode 100644 index 00000000..157e5fa3 --- /dev/null +++ b/addNum @@ -0,0 +1,22 @@ +class MedianFinder: + def __init__(self): + self.maxHeap = [] + self.minHeap = [] + + def addNum(self, num: int) -> None: + if not self.maxHeap or num <= -self.maxHeap[0]: + heapq.heappush(self.maxHeap, -num) + else: + heapq.heappush(self.minHeap, num) + + # Balance two heaps s.t. + # |maxHeap| >= |minHeap| and |maxHeap| - |minHeap| <= 1 + if len(self.maxHeap) < len(self.minHeap): + heapq.heappush(self.maxHeap, -heapq.heappop(self.minHeap)) + elif len(self.maxHeap) - len(self.minHeap) > 1: + heapq.heappush(self.minHeap, -heapq.heappop(self.maxHeap)) + + def findMedian(self) -> float: + if len(self.maxHeap) == len(self.minHeap): + return (-self.maxHeap[0] + self.minHeap[0]) / 2.0 + return -self.maxHeap[0]