Problem
Given an integer array and a number k, find the k most frequent elements in the array.
Example
{
"arr": [1, 2, 3, 2, 4, 3, 1],
"k": 2
}
Output:
[3, 1]
Solution
function mostFrequentWord(arr, k) {
const freq = new Map();
let result = [];
let n = arr.length;
for (let i = 0; i < n; i++) {
let x = 0;
if (freq.has(arr[i]) == true) {
x = freq.get(arr[i]);
}
freq.set(words[i], x + 1);
}
let freqWordsSorted = new Map([...freq.entries()].sort((a, b) => b[1] - a[1]));
for (let [key, value] of freqWordsSorted) {
result.push(key);
k--;
if(!k) {
break;
}
}
console.log(result);
}
// given set of keys
let arr = [1, 2, 3, 2, 4, 3, 1];
let n = 2;
mostFrequentWord(arr, n);