Skip to content

Commit c56b727

Browse files
committed
add solution: top-k-frequent-elements
1 parent fec6b72 commit c56b727

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// μ‹œκ°„λ³΅μž‘λ„: O(n)
2+
3+
/**
4+
* @param {number[]} nums
5+
* @param {number} k
6+
* @return {number[]}
7+
*/
8+
var topKFrequent = function (nums, k) {
9+
// λΉˆλ„ 계산
10+
const frequencyMap = new Map();
11+
for (let num of nums) {
12+
frequencyMap.set(num, (frequencyMap.get(num) || 0) + 1);
13+
}
14+
15+
// 버킷 μ •λ ¬
16+
const bucket = Array(nums.length + 1).fill(null).map(() => []);
17+
for (let [num, freq] of frequencyMap) {
18+
bucket[freq].push(num);
19+
}
20+
21+
// λΉˆλ„ 높은 μš”μ†Œλ“€ μΆ”μΆœ
22+
const result = [];
23+
for (let i = bucket.length - 1; i >= 0 && result.length < k; i--) {
24+
if (bucket[i].length > 0) {
25+
result.push(...bucket[i]);
26+
}
27+
}
28+
29+
return result.slice(0, k); // μƒμœ„ k개의 μš”μ†Œ λ°˜ν™˜
30+
};

0 commit comments

Comments
Β (0)