Я пытался решить самый популярный элемент в проблеме с массивами.
Я нашел несколько решений O (n) с использованием карт, но ничего, что вполне работало, когда у вас смешанные типы данных, скажем,
[1,2,1,3,"1","a"]
"1" получает смешанный с 1. Есть ли шанс, что я могу отменить сравнение в JS?Или любое решение O (n), которое могло бы это исправить?
Это был самый популярный элемент массива, который я использовал, учитывая, что вы можете иметь более одного с одним и тем же количеством:
function getMostFrequent(array) {
if (array.length == 0)
return null;
let mapEl = {};
let maxEl = [];
let maxCount = 1;
for (let i = 0; i < array.length; i++) {
let el = array[i];
if (mapEl[el] == null) {
mapEl[el] = 1;
} else {
mapEl[el]++;
}
if (mapEl[el] > maxCount) {
maxCount = mapEl[el];
maxEl = [el];
} else if (mapEl[el] === maxCount) {
maxEl.push(el);
}
}
console.log(maxEl);
return maxEl;
}