Skip to content

Commit 2d4e1c9

Browse files
committed
find-median-from-data-stream solution
1 parent 798e93b commit 2d4e1c9

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class MedianFinder:
2+
# Follow up : 두 개의 heap μ‚¬μš©ν•΄μ„œ κ΅¬ν˜„ κ°€λŠ₯(μ‹œκ°„λ³΅μž‘λ„ O(log n), μΆ”κ°€ 곡뢀 ν•„μš”ν•¨)
3+
# heap μ‚¬μš©ν•˜μ§€ μ•Šκ³  이진 탐색 μ‚½μž…μœΌλ‘œ ν’€μ—ˆμŒ
4+
5+
def __init__(self):
6+
# 숫자 μ €μž₯ν•  리슀트 생성
7+
self.arr = []
8+
9+
10+
def addNum(self, num: int) -> None:
11+
# 숫자 μΆ”κ°€ν•˜κ³  μ •λ ¬ν•˜κΈ°
12+
# self.arr.append(num)
13+
# self.arr.sort() -> μ‹œκ°„μ΄ˆκ³Ό(μ‹œκ°„λ³΅μž‘λ„ O(n log n))
14+
# μ΄μ§„νƒμƒ‰μ‚½μž…(μ‹œκ°„λ³΅μž‘λ„ O(n))
15+
bisect.insort(self.arr, num)
16+
17+
def findMedian(self) -> float:
18+
# 길이가 ν™€μˆ˜λ©΄ κ°€μš΄λ° κ°’ 리턴
19+
if len(self.arr)%2 == 1:
20+
return self.arr[len(self.arr)//2]
21+
# 길이가 짝수면 κ°€μš΄λ° 두 수의 평균 리턴
22+
return (self.arr[len(self.arr)//2-1] + self.arr[len(self.arr)//2]) / 2
23+
24+
# Your MedianFinder object will be instantiated and called as such:
25+
# obj = MedianFinder()
26+
# obj.addNum(num)
27+
# param_2 = obj.findMedian()

0 commit comments

Comments
Β (0)