Skip to content

Commit 48c0737

Browse files
feat: top k frequent 문제 풀이
1 parent b287334 commit 48c0737

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

top-k-frequent-elements/grapefruitgreentealoe.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,31 @@ var topKFrequent = function (nums, k) {
2727
};
2828

2929
//O(n) + O(n log n) + O(n) + O(k) = O(n log n)
30+
31+
32+
//7.22 소요시간 10분
33+
/**
34+
* @param {number[]} nums
35+
* @param {number} k
36+
* @return {number[]}
37+
*/
38+
var topKFrequent = function(nums, k) {
39+
//우선은, Map으로 만들어서 숫자 각각에 대한 개수를 구한다.
40+
const numsMap = new Map();
41+
for(let num of nums){
42+
if(numsMap.has(num)){
43+
numsMap.set(num,numsMap.get(num)+1)
44+
}else{
45+
numsMap.set(num,1)
46+
}
47+
}
48+
//그런다음 Map에 대해서, 가장 큰 값을 가진 순으로 정렬을 한다.
49+
const ret = [...numsMap].sort((a,b)=>b[1]-a[1]).slice(0,k).map(x=>x[0]);
50+
return ret
51+
};
52+
53+
// 이전 답과 비슷하지만, for문 처리에 대해서, 조금 풀어서 작성을 하게 된거같다.
54+
// 시간복잡도와 공간복잡도는 위의 코드와 같다.
55+
56+
// 시간 복잡도 : for문 - O(n) , sort O(nlogn)
57+
// 공간 복잡도 : O(n)

0 commit comments

Comments
 (0)