File tree Expand file tree Collapse file tree 1 file changed +32
-0
lines changed
Expand file tree Collapse file tree 1 file changed +32
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number[] } nums
3+ * @param {number } k
4+ * @return {number[] }
5+ */
6+ var topKFrequent = function ( nums , k ) {
7+ let map = new Map ( ) ; // key์๋ ํด๋น๋๋ ์ซ์, value์๋ ํด๋น๋๋ ์ซ์์ ๊ฐฏ์
8+
9+ // ์ซ์๋ณ ๋น๋์
10+ nums . forEach ( ( num ) => {
11+ map . set ( num , ( map . get ( num ) || 0 ) + 1 ) ;
12+ } ) ;
13+
14+ // ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด๋ก ๋ฐ๊ฟ์ฃผ๊ณ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
15+ let sortedResult = Array . from ( map . entries ( ) ) . sort ( ( a , b ) => b [ 1 ] - a [ 1 ] ) ;
16+ //console.log(sortedResult);
17+ //console.log(sortedResult.slice(0,k));
18+
19+ // k๊ฐฏ์์ ์ซ์ ๋ฐํ
20+ return sortedResult . slice ( 0 , k ) . map ( item => item [ 0 ] ) ;
21+ } ;
22+
23+ // ์ฌ๊ธฐ์ ์ ์ฝ๋์ ์๊ฐ๋ณต์ก๋์ ๊ณต๊ฐ๋ณต์ก๋๋ฅผ ์๊ฐํด๋ณด์...
24+ // ์๊ฐ๋ณต์ก๋ => O(m log m) ** ๋ ๊ฐ์ ํ ๋ฐฉ๋ฒ ์ฐพ์๋ณด๊ธฐ
25+ // forEach ํตํ ๋ฐฐ์ด ์ํ: ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ n์ด๋ผ๊ณ ํ๋ค๋ฉด O(n)
26+ // sortedResult (์ ๋ ฌ): O(m log m)
27+ // k๊ฐฏ์์ ์ซ์ ๋ฐํ: k๊ฐ ํญ๋ชฉ์ ๋ํด ์ฐ์ฐํ๋๊น O(k)
28+
29+ // ๊ณต๊ฐ๋ณต์ก๋ => O(n)
30+ // map์ ํฌ๊ธฐ: ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ n์ด๋ผ๊ณ ํ๋ค๋ฉด O(n)
31+ // sortedResult: O(m)
32+ // k๊ฐ ์ซ์ ์ ์ฅ: O(k)
You canโt perform that action at this time.
0 commit comments