Skip to content

Commit 02fa577

Browse files
committed
Solve Find median from data stream
1 parent 2606c65 commit 02fa577

File tree

2 files changed

+34
-8
lines changed

2 files changed

+34
-8
lines changed

find-median-from-data-stream/KwonNayeon.py

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,39 @@
55
- At most 5 * 10^4 calls will be made to addNum and findMedian.
66
77
Time Complexity:
8-
-
8+
- addNum(): O(nlogn)
9+
- 매번 정렬하기 때문
10+
- findMedian(): O(1)
11+
- 정렬된 리스트에서 인덱스 접근
912
10-
Space Complexity:
11-
-
13+
Space Complexity: O(n)
14+
- 입력된 모든 숫자를 리스트에 저장
1215
1316
풀이방법:
14-
-
17+
1. 리스트 자료구조 사용
18+
2. 리스트에 각 요소들 추가 후 정렬
19+
3. 리스트의 요소 갯수가 홀수/짝수일 때의 경우를 나눠서 median 값을 구함
20+
21+
메모:
22+
- heap이 익숙하지 않아서 일단 리스트로 문제를 풀었습니다.
23+
- 나중에 heap으로 다시 풀기
1524
"""
25+
class MedianFinder:
26+
27+
def __init__(self):
28+
self.nums = []
29+
30+
def addNum(self, num: int) -> None:
31+
self.nums.append(num)
32+
self.nums.sort()
33+
34+
35+
def findMedian(self) -> float:
36+
n = len(self.nums)
37+
if n % 2 == 1:
38+
return self.nums[n // 2]
39+
else:
40+
mid1 = self.nums[n // 2 - 1]
41+
mid2 = self.nums[n // 2]
42+
return (mid1 + mid2) / 2.0
43+

meeting-rooms/KwonNayeon.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,10 @@
2121
5. 모든 미팅을 검사한 후에도 충돌이 없으면 true 반환
2222
2323
메모:
24-
25-
변수명 헷갈림:
24+
1. 변수명 헷갈림
2625
- intervals는 리스트 -> `.end` 속성 없음
2726
- interval은 객체 -> `.end` 속성 있음
28-
29-
정렬 문법:
27+
2. 정렬 문법
3028
- list.sort(key=lambda x: x.start)
3129
"""
3230
from typing import List

0 commit comments

Comments
 (0)