File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree 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 numsMap = new Map ( ) ;
8+
9+ for ( let i = 0 ; i < nums . length ; i ++ ) {
10+ // 1. numsMap에 nums[i]가 key로 있나 확인
11+ // 1-1. 있으면 nums[i]와 동일한 key를 찾은 후 value에 +1
12+ // 1-2. 없으면 새로 생성 & value를 1로.
13+ let hasNum = numsMap . has ( nums [ i ] ) ;
14+ if ( hasNum ) {
15+ numsMap . set ( nums [ i ] , numsMap . get ( nums [ i ] ) + 1 ) ;
16+ } else {
17+ numsMap . set ( nums [ i ] , 1 ) ;
18+ }
19+ }
20+
21+ // 2. numsMap을 배열로 변경 (mapToArr)
22+ // 3. mapToArr에서 value가 가장 놓은 순대로 sort
23+ // 4. mapToArr를 k개 까지만 잘라낸 후
24+ // 5. mapToArr의 각 아이템의 0번째 값만 추출하여 새로운 배열 만들고 return
25+ let mapToArr = Array . from ( numsMap ) ;
26+
27+ mapToArr . sort ( ( a , b ) => b [ 1 ] - a [ 1 ] ) ;
28+
29+ const slicedMapToArr = mapToArr . slice ( 0 , k ) ;
30+ const result = slicedMapToArr . map ( ( item ) => item [ 0 ] ) ;
31+
32+ return result ;
33+ } ;
You can’t perform that action at this time.
0 commit comments