File tree Expand file tree Collapse file tree 2 files changed +38
-33
lines changed Expand file tree Collapse file tree 2 files changed +38
-33
lines changed Load Diff This file was deleted.
Original file line number Diff line number Diff line change
1
+ /**
2
+ *
3
+ * ์ ๊ทผ ๋ฐฉ๋ฒ :
4
+ * - ์ ๋ ฌ ์ฌ์ฉํ์ง ์๊ณ o(n)์ ํ๊ธฐ ์ํด์ ์ซ์ ๋น๋์๋ฅผ ๋ฐฐ์ด ์ธ๋ฑ์ค๋ก ์ ์ฅ
5
+ * - ์ซ์ ๋น๋์ค๋ฅผ ๋งต์ ์ ์ฅ
6
+ * - ๋งต์ ์ํํ๋ฉด์, ๋น๋์๋ฅผ ๋ฐฐ์ด์ ์ ์ฅ (๋์ผ ๋ฐ๋์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์ 2์ฐจ์ ๋ฐฐ์ด ์ฌ์ฉ)
7
+ * - ๋ฐฐ์ด์ ์ญ์์ผ๋ก ์ํํ๋ฉด์ ๋น๋์ ๊ธฐ๋ฐ์ ๊ฐ์ ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ์ ์ฅ
8
+ * - ๊ฒฐ๊ณผ ๋ฐฐ์ด์ k๊ฐ๋งํผ ์๋ผ์ ๋ฆฌํด
9
+ *
10
+ * ์๊ฐ๋ณต์ก๋ : O(n)
11
+ * - nums ๋ฐฐ์ด 1ํ ์ํํ๋ฉด์ ๋งต์ ์ ์ฅํ๋๊น O(n)
12
+ *
13
+ * ๊ณต๊ฐ๋ณต์ก๋ : O(n)
14
+ * - nums ๋ฐฐ์ด ๊ธธ์ด๋งํผ ๋งต๊ณผ 2์ฐจ์ ๋ฐฐ์ด์ ์ ๋ฆฌํ๋๊น O(n)
15
+ */
16
+ function topKFrequent ( nums : number [ ] , k : number ) : number [ ] {
17
+ const numMap = new Map ( ) ;
18
+
19
+ for ( const num of nums ) {
20
+ numMap . set ( num , ( numMap . get ( num ) ?? 0 ) + 1 ) ;
21
+ }
22
+
23
+ const storedArr : number [ ] [ ] = Array ( nums . length + 1 )
24
+ . fill ( null )
25
+ . map ( ( ) => [ ] ) ;
26
+
27
+ for ( const [ num , frequency ] of numMap ) {
28
+ storedArr [ frequency ] . push ( num ) ;
29
+ }
30
+
31
+ const result : number [ ] = [ ] ;
32
+
33
+ for ( let i = storedArr . length - 1 ; i >= 0 ; i -- ) {
34
+ if ( storedArr [ i ] . length > 0 ) result . push ( ...storedArr [ i ] ) ;
35
+ }
36
+
37
+ return result . slice ( 0 , k ) ;
38
+ }
You canโt perform that action at this time.
0 commit comments