https://algodaily.com/challenges/majority-element

“Suppose we’re given an array of numbers like the following:

[4, 2, 4]

Could you find the majority element? A majority is defined as “the greater part, or more than half, of the total. It is a subset of a set consisting of more than half of the set’s elements.

Let’s assume that the array length is always at least one, and that there’s always a majority element.

In the example above, the majority element would be 4.”

Seems like a hash would work for this:

function majorityElement(items) {
const counts = {};
let maxCount = 0;
let majorityElement;
for (const item of items) {
if (!(item in counts)) {
counts[item] = 0;
}
counts[item]++;
if (counts[item] >= Math.floor(items.length / 2) && counts[item] > maxCount) {
majorityElement = item;
}
}
return majorityElement;
}


Test cases:

majorityElement([1, 4, 2, 4, 4, 3, 4]);
// 4

majorityElement([1, 1, 1, 4, 2, 4, 4, 3, 1, 1, 1]);
// 1


This is a brute-force approach but is straightforward.

Algo Daily has an interesting solution: sort the items, then take the median item, as a majority item is guaranteed to be at this index in a sorted array:

function majorityElement(items) {
return items.sort()[Math.floor(items.length / 2)];
}