File tree Expand file tree Collapse file tree 1 file changed +44
-0
lines changed
Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change 1+ from typing import List
2+
3+
4+ class Solution :
5+ """
6+ νμ΄:
7+ - λΉλμ μΈκΈ° + Bucket Sortλ₯Ό μ‘°ν©ν΄μ μ λ ¬ μμ΄ O(n)μ μμ kκ°λ₯Ό λ½λλ€.
8+ - 1λ¨κ³: numsλ₯Ό μννλ©° κ° μ«μμ λ±μ₯ νμλ₯Ό dictλ‘ μΌλ€.
9+ - 2λ¨κ³: λΉλμλ₯Ό μΈλ±μ€λ‘ νλ λ²ν· λ°°μ΄μ λ§λ λ€.
10+ λΉλμλ μ΅λ len(nums)μ΄λ―λ‘ λ°°μ΄ ν¬κΈ°κ° κ³ μ λ¨.
11+ - 3λ¨κ³: λ²ν· λ°°μ΄μ λ€μμλΆν°(λμ λΉλμλΆν°) μννλ©° kκ°λ₯Ό μμ§νλ€.
12+ - μ λ ¬(O(n log n)) λμ λ²ν·μ μΈλ±μ€ μμ²΄κ° μ λ ¬ μν μ νλ―λ‘ O(n).
13+
14+ TC: O(n)
15+ - λΉλμ μΈκΈ°: numsλ₯Ό ν λ² μν. O(n).
16+ - λ²ν· λ°°μ΄ μμ±: κ³ μ μμ μλ§νΌ μν. μ΅μ
O(n).
17+ - μμ kκ° μμ§: λ²ν· λ°°μ΄μ λ€μμλΆν° μν. μ΅μ
O(n).
18+ - μ’
ν©: O(n).
19+
20+ SC: O(n)
21+ - counts(dict): μ΅μ
nκ°μ κ³ μ μμ. O(n).
22+ - bucket(list of lists): ν¬κΈ° n+1. O(n).
23+ - answer(list): μ΅λ kκ°. O(k) β€ O(n).
24+ - μ’
ν©: O(n).
25+ """
26+ def topKFrequent (self , nums : List [int ], k : int ) -> List [int ]:
27+ counts = dict ()
28+ for num in nums :
29+ if num not in counts :
30+ counts [num ] = 0
31+ counts [num ] += 1
32+
33+ bucket = [[] for _ in range (len (nums ) + 1 )]
34+ for num , cnt in counts .items ():
35+ bucket [cnt ].append (num )
36+
37+ answer = []
38+ for cnt_list in reversed (bucket ):
39+ if not cnt_list :
40+ continue
41+ for num in cnt_list :
42+ answer .append (num )
43+ if len (answer ) == k :
44+ return answer
You canβt perform that action at this time.
0 commit comments