File tree Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change 1+ // μκ°λ³΅μ‘λ: O(n)
2+
3+ /**
4+ * @param {number[] } nums
5+ * @param {number } k
6+ * @return {number[] }
7+ */
8+ var topKFrequent = function ( nums , k ) {
9+ // λΉλ κ³μ°
10+ const frequencyMap = new Map ( ) ;
11+ for ( let num of nums ) {
12+ frequencyMap . set ( num , ( frequencyMap . get ( num ) || 0 ) + 1 ) ;
13+ }
14+
15+ // λ²ν· μ λ ¬
16+ const bucket = Array ( nums . length + 1 ) . fill ( null ) . map ( ( ) => [ ] ) ;
17+ for ( let [ num , freq ] of frequencyMap ) {
18+ bucket [ freq ] . push ( num ) ;
19+ }
20+
21+ // λΉλ λμ μμλ€ μΆμΆ
22+ const result = [ ] ;
23+ for ( let i = bucket . length - 1 ; i >= 0 && result . length < k ; i -- ) {
24+ if ( bucket [ i ] . length > 0 ) {
25+ result . push ( ...bucket [ i ] ) ;
26+ }
27+ }
28+
29+ return result . slice ( 0 , k ) ; // μμ kκ°μ μμ λ°ν
30+ } ;
You canβt perform that action at this time.
0 commit comments