|
3 | 3 |
|
4 | 4 | class Solution:
|
5 | 5 | def topKFrequent(self, nums: List[int], k: int) -> List[int]:
|
6 |
| - # ํ๋์ฉ ์ ๋ถ ๋๋ฉด์ ๋น๋์ ์ ์ฅ, k๊ฐ๋งํผ๋ง |
7 |
| - # cnt ํจ์๋ฅผ ์จ์ ๋น๊ตํ ์ ์ฅ -> ๋ ๋ง์ ๋ฐ๋ณต? |
8 |
| - # ์ผ๋จ ํ๋ฒ์ ๋ค ๋์์ผํจ. ๊ฐ์ฅ ์ ๊ฒ ๋ ์ ์๋ ๋ฐฉ๋ฒ? |
9 |
| - # ์ ์ฒด ์์ฐจ ๋น๊ต? |
10 | 6 |
|
11 |
| - table = {} |
| 7 | + table = {} # 1. Initialize |
12 | 8 |
|
| 9 | + # 2. Populate frequency map |
13 | 10 | for i in range(len(nums)):
|
14 | 11 | table[nums[i]] = table.get(nums[i], 0) + 1
|
15 | 12 |
|
| 13 | + # 3. Find top K frequent elements |
16 | 14 | topk = heapq.nlargest(k, table, key=table.get)
|
17 | 15 | return topk
|
| 16 | + |
| 17 | + |
| 18 | +""" |
| 19 | +* ์ด๊ธฐ ์์ด๋์ด * |
| 20 | +- ํ๋์ฉ ์ ๋ถ ๋๋ฉด์ ๋น๋์ ์ ์ฅ, k๊ฐ ๋งํผ๋ง -> ๋น๊ต/์ ๋ ฌ ๊ณผ์ ๊ณ ๋ ค ํ์ |
| 21 | +- count ํจ์๋ฅผ ์จ์ ๋น๊ตํ ์ ์ฅ -> ๋ ๋ง์ ๋ฐ๋ณต? O |
| 22 | +- ์ผ๋จ ํ๋ฒ์ ๋ค ๋์์ผํจ. ๊ฐ์ฅ ์ ๊ฒ ๋ ์ ์๋ ๋ฐฉ๋ฒ? |
| 23 | +- ์ ์ฒด ์์ฐจ ๋น๊ต? |
| 24 | +- Counter, ๋น๋์ + top K๊ฐ |
| 25 | +
|
| 26 | +Time complexity : O(N + MlogK) |
| 27 | +- step 2 (iteration) : O(N) |
| 28 | + - ๋ฆฌ์คํธ์ ๊ธธ์ด๊ฐ N ์ผ๋, nums ๋ชจ๋ ์ํ |
| 29 | +- step 3 (iteration) : O(NlogK) |
| 30 | + - heapq.nlargest ํจ์๋ table์ ๋ชจ๋ M๊ฐ์ ์์(ํค-๊ฐ ์)๋ฅผ ์ํํ๋ฉฐ, ํฌ๊ธฐ k์ ์ต์ ํ์ ์ ์ง |
| 31 | + - ํ์ ์ฝ์
(or ์ ๊ฑฐ ํ ์ฝ์
) ์ฐ์ฐ์ ํ์ ํฌ๊ธฐ k์ ๋น๋ก, O(logK) |
| 32 | + - ๊ฐ ์์์ ์ ์ฉ O(MlogK), ์ต์
์ ๊ฒฝ์ฐ O(NlogK). M์ N์ ์ด๊ณผํ ์ ์์. |
| 33 | + |
| 34 | +Space Complexity) |
| 35 | +- ๋น๋์ ๋งต (๋์
๋๋ฆฌ): O(N) (์ต์
์ ๊ฒฝ์ฐ, ๋ชจ๋ ์ซ์๊ฐ ๊ณ ์ ํ ๋) |
| 36 | +- ํ (heapq.nlargest ๋ด๋ถ์์ ์ฌ์ฉ): O(K) |
| 37 | +
|
| 38 | +* heapq.nlargest * |
| 39 | +- ๊ฐ์ฅ ํฐ k๊ฐ์ ์์๋ฅผ ์ฐพ๋ ํจ์ |
| 40 | + 1. ํ ์ด๊ธฐํ. ํฌ๊ธฐ๊ฐ k์ธ (์ต์)ํ ์์ฑ |
| 41 | + 2. ์ํ ๋ฐ ํ ๊ด๋ฆฌ |
| 42 | + - table ์ ์ฒด๋ฅผ ์ํํ๋ฉฐ key=table.get ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋น๊ต |
| 43 | + - ํ์ด k๊ฐ ๋ฏธ๋ง์ผ ๊ฒฝ์ฐ ์์ ์ถ๊ฐ, ๋ค ์ฐผ์๊ฒฝ์ฐ ๋น๊ตํ ์ฌ์ ๋ ฌ |
| 44 | + - ํ์ฌ ์์ b์ ๊ฐ๊ณผ ํ์ ๋ฃจํธ์ ์๋ ์์ a๋ฅผ ๋น๊ต |
| 45 | + - b > a ์ด๋ฉด, a๋ฅผ ์ ๊ฑฐํ๊ณ b๋ฅผ ์ถ๊ฐ ๋ฐ ์ฌ์ ๋ ฌ |
| 46 | + - b <= a ์ด๋ฉด, b๋ฅผ ๋ฒ๋ฆผ |
| 47 | + - ํ์ ์๋ ์์๋ค์ ์ ๋ ฌ๋ ๋ฆฌ์คํธ๋ก ๋ฐํ |
| 48 | +- max heap์ด ์๋ min heap์ ์ฌ์ฉํ๋ ์ด์ |
| 49 | +""" |
0 commit comments