PHP Dominator
function dominator(array $a): int
{
$size = $value = $count = 0;
$index = 0;
foreach ($a as $k => $v) {
if ($size === 0) {
$size++;
$value = $v;
$index = $k;
} elseif ($value !== $v) {
$size--;
} else {
$size++;
}
}
$candidate = $size > 0 ? $value : -1;
foreach ($a as $v) {
if ($v === $candidate) {
$count++;
}
}
if ($count <= count($a) / 2) {
$index = -1;
}
return $index;
}
This finds a value that appears in more than half of the array, then returns one valid index for it.