Skip to content

Commit 936b0d4

Browse files
authored
Create 295-Find-Median-from-Data-Stream.py
1 parent c7dd012 commit 936b0d4

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

295-Find-Median-from-Data-Stream.py

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class MedianFinder:
2+
3+
def __init__(self):
4+
"""
5+
initialize your data structure here.
6+
"""
7+
# two heaps, large, small, minheap, maxheap
8+
# heaps should be equal size
9+
self.small, self.large = [], [] # maxHeap, minHeap (python default)
10+
11+
def addNum(self, num: int) -> None:
12+
heapq.heappush(self.small, -1 * num)
13+
14+
if (self.small and self.large and (-1 * self.small[0]) > self.large[0]):
15+
val = -1 * heapq.heappop(self.small)
16+
heapq.heappush(self.large, val)
17+
18+
if len(self.small) > len(self.large) + 1:
19+
val = -1 * heapq.heappop(self.small)
20+
heapq.heappush(self.large, val)
21+
if len(self.large) > len(self.small) + 1:
22+
val = heapq.heappop(self.large)
23+
heapq.heappush(self.small, -1 * val)
24+
25+
def findMedian(self) -> float:
26+
if len(self.small) > len(self.large):
27+
return -1 * self.small[0]
28+
elif len(self.large) > len(self.small):
29+
return self.large[0]
30+
return (-1 * self.small[0] + self.large[0]) / 2

0 commit comments

Comments
 (0)