File tree Expand file tree Collapse file tree 2 files changed +52
-2
lines changed
find-median-from-data-stream Expand file tree Collapse file tree 2 files changed +52
-2
lines changed Original file line number Diff line number Diff line change
1
+ """
2
+ Constraints:
3
+ - -10^5 <= num <= 10^5
4
+ - There will be at least one element in the data structure before calling findMedian.
5
+ - At most 5 * 10^4 calls will be made to addNum and findMedian.
6
+
7
+ Time Complexity:
8
+ - addNum(): O(nlogn)
9
+ - ๋งค๋ฒ ์ ๋ ฌํ๊ธฐ ๋๋ฌธ
10
+ - findMedian(): O(1)
11
+ - ์ ๋ ฌ๋ ๋ฆฌ์คํธ์์ ์ธ๋ฑ์ค ์ ๊ทผ
12
+
13
+ Space Complexity: O(n)
14
+ - ์
๋ ฅ๋ ๋ชจ๋ ์ซ์๋ฅผ ๋ฆฌ์คํธ์ ์ ์ฅ
15
+
16
+ ํ์ด๋ฐฉ๋ฒ:
17
+ 1. ๋ฆฌ์คํธ ์๋ฃ๊ตฌ์กฐ ์ฌ์ฉ
18
+ 2. ๋ฆฌ์คํธ์ ๊ฐ ์์๋ค ์ถ๊ฐ ํ ์ ๋ ฌ
19
+ 3. ๋ฆฌ์คํธ์ ์์ ๊ฐฏ์๊ฐ ํ์/์ง์์ผ ๋์ ๊ฒฝ์ฐ๋ฅผ ๋๋ ์ median ๊ฐ์ ๊ตฌํจ
20
+
21
+ ๋ฉ๋ชจ:
22
+ - heap์ด ์ต์ํ์ง ์์์ ์ผ๋จ ๋ฆฌ์คํธ๋ก ๋ฌธ์ ๋ฅผ ํ์์ต๋๋ค.
23
+ - ๋์ค์ heap์ผ๋ก ๋ค์ ํ๊ธฐ
24
+ """
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
+
Original file line number Diff line number Diff line change 13
13
14
14
ํ์ด๋ฐฉ๋ฒ:
15
15
1. Base case: ๋น ๋ฐฐ์ด/none์ผ ๋ True ๋ฐํ
16
- 2. intervals๋ฅผ ์์์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
17
- 3. prev_end ์ด๊ธฐํ (์ฒซ ๋ฒ์งธ ๋ฏธํ
์ ์ข
๋ฃ ์๊ฐ)
16
+ 2. ๋ฆฌ์คํธ(ntervals)๋ฅผ ์์์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
17
+ 3. prev_end(์ฒซ ๋ฒ์งธ ๋ฏธํ
์ ์ข
๋ฃ ์๊ฐ) ๋ณ์ ์ด๊ธฐํ
18
18
4. ๋ ๋ฒ์งธ ๋ฏธํ
๋ถํฐ ์ํํ๋ฉด์:
19
19
- ๋ง์ฝ ํ์ฌ ์์์ (๋ฏธํ
์์ ์๊ฐ)์ด ์ด์ ๋ฏธํ
์ ์ข
๋ฃ ์๊ฐ๋ณด๋ค ์์ผ๋ฉด false ๋ฐํ
20
20
- ๊ทธ๋ ์ง ์์ผ๋ฉด prev_end๋ฅผ ํ์ฌ ๋ฏธํ
์ ์ข
๋ฃ ์๊ฐ์ผ๋ก ์
๋ฐ์ดํธ
21
21
5. ๋ชจ๋ ๋ฏธํ
์ ๊ฒ์ฌํ ํ์๋ ์ถฉ๋์ด ์์ผ๋ฉด true ๋ฐํ
22
+
23
+ ๋ฉ๋ชจ:
24
+ 1. ๋ณ์๋ช
ํท๊ฐ๋ฆผ
25
+ - intervals๋ ๋ฆฌ์คํธ -> `.end` ์์ฑ ์์
26
+ - interval์ ๊ฐ์ฒด -> `.end` ์์ฑ ์์
27
+ 2. ์ ๋ ฌ ๋ฌธ๋ฒ
28
+ - list.sort(key=lambda x: x.start)
22
29
"""
23
30
from typing import List
24
31
You canโt perform that action at this time.
0 commit comments