In PHP possiamo ottenere l'elemento univoco in un array.
Dato un array di valori non univoci, possiamo restituire solo quel valore che ricorre una sola volta.
function find_occurences($num = 0, $items = []) {
$count = 0;
for($i = 0; $i < count($items); $i++) {
if($items[$i] === $num) {
$count++;
}
}
return $count;
}
function single_number($nums = []) {
if(!is_array($nums) || count($nums) === 0) {
return -1;
}
$length = count($nums);
if($length === 1) {
return $nums[0];
}
$unique_nums = array_unique($nums);
$unique_map = array_map(function($u) use ($nums) {
return [$u, find_occurences($u, $nums)];
}, $unique_nums);
$result = [];
foreach($unique_map as $umap) {
if($umap[1] === 1) {
$result[] = $umap;
}
}
return $result[0][0];
}
function main() {
$tests = [[2, 2, 1], [4, 1, 2, 1, 2], [1]];
foreach($tests as $test) {
print_r(single_number($test));
}
}
main();