Skip to content

Commit ded43f4

Browse files
committed
Add week 5 soultions : topKFrequentElements
1 parent 99e7ce5 commit ded43f4

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

top-k-frequent-elements/yolophg.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Time Complexity: O(n)
2+
// Space Complexity: O(m)
3+
4+
var topKFrequent = function(nums, k) {
5+
const frequencyMap = new Map();
6+
// for each number in the array, update frequency.
7+
for (const num of nums) {
8+
frequencyMap.set(num, (frequencyMap.get(num) || 0));
9+
}
10+
11+
// create buckets where index represents frequency.
12+
const buckets = Array(nums.length + 1).fill().map(() => []);
13+
// place each number into the bucket corresponding to frequency.
14+
for (const [num, frequency] of frequencyMap.entries()) {
15+
buckets[frequency].push(num);
16+
}
17+
18+
const result = [];
19+
// iterate from the highest possible frequency down to the lowest.
20+
for (let i = buckets.length - 1; i >= 0 && result.length < k; i--) {
21+
if (buckets[i].length > 0) {
22+
result.push(...buckets[i]);
23+
}
24+
}
25+
26+
// ensure the result length is k.
27+
return result.slice(0, k);
28+
};

0 commit comments

Comments
 (0)