Skip to content

Commit 00c6257

Browse files
committed
topKFrequent 문제 풀이 추가
1 parent 8b82af4 commit 00c6257

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
2+
// TC: O(NlogN)
3+
// SC: O(N)
4+
function topKFrequent(nums: number[], k: number): number[] {
5+
6+
/**
7+
Map ( O(N) )
8+
1 : 4
9+
4 : 1
10+
3 : 3
11+
2 : 2
12+
13+
-> convert it to array ( O(N) ) : [[1,4], [4,1], [3,3], [2,2]]
14+
-> sort by value ( O(NlogN) ): [[1,4], [3,3], [2,2], [4,1]]
15+
-> slice(0,k) ( (O(N) ) : [[1,4], [3,3]]
16+
-> make array from keys ( (O(N) ) : [1,4]
17+
*/
18+
19+
const numMap = new Map<number, number>();
20+
const n = nums.length;
21+
22+
for(let i = 0; i < n; i++) {
23+
const num = nums[i];
24+
const frequency = (numMap.get(num) || 0)
25+
numMap.set(num, frequency + 1);
26+
}
27+
28+
29+
const numFrequencyArr = Array.from(numMap);
30+
const sortedNumFrequencyKeysArr =
31+
numFrequencyArr
32+
.sort((a,b) => b[1]-a[1])
33+
.map((entry) => entry[0]);
34+
35+
36+
return sortedNumFrequencyKeysArr.slice(0, k)
37+
};

0 commit comments

Comments
 (0)