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
+ /**
2
+ * ์ ์ array nums , ์ ์ k๊ฐ ์์๋, ๊ฐ์ฅ ๋น๋๊ฐ ๋์ ์ซ์ k๊ฐ ๋ฆฌํด. ์์์๊ด X
3
+ */
4
+
5
+ /**
6
+ * @param {number[] } nums
7
+ * @param {number } k
8
+ * @return {number[] }
9
+ */
10
+
11
+ //nums์ ๋ํด์ ๊ฐ ์์์ ๋ํด ์ค๋ณต๋๋ ํ์๋ฅผ ๊ตฌํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด๋ฆผ์ฐจ์์ผ๋ก k๊ฐ ๋ฆฌํดํ๋ค.
12
+
13
+ var topKFrequent = function ( nums , k ) {
14
+ const numsFreqMap = new Map ( ) ; // O(1)
15
+
16
+ // O(n) ์๊ฐ / O(n) ๊ณต๊ฐ
17
+ for ( let i = 0 ; i < nums . length ; i ++ ) {
18
+ const count = ( numsFreqMap . get ( nums [ i ] ) ?? 0 ) + 1 ; // O(1)
19
+ numsFreqMap . set ( nums [ i ] , count ) ; // O(1)
20
+ }
21
+
22
+ const arrFromFreqMap = [ ...numsFreqMap ] ; // O(n) ์๊ฐ / O(n) ๊ณต๊ฐ
23
+ arrFromFreqMap . sort ( ( a , b ) => b [ 1 ] - a [ 1 ] ) ; // O(n log n) ์๊ฐ
24
+
25
+ return arrFromFreqMap
26
+ . map ( ( x ) => x [ 0 ] ) // O(n) ์๊ฐ / O(n) ๊ณต๊ฐ
27
+ . slice ( 0 , k ) ; // O(k) ์๊ฐ / O(k) ๊ณต๊ฐ
28
+ } ;
29
+
30
+ //O(n) + O(n log n) + O(n) + O(k) = O(n log n)
You canโt perform that action at this time.
0 commit comments