How to find the maximum distance between two occurrences of same number in array with PHP

1 Answer

0 votes
function GetMaxDistance($arr) {
    $map = array();
    $maximumDistance = 0;
    $size = count($arr);
    
    for ($i = 0; $i < $size; $i++) {
        if (!array_key_exists($arr[$i],$map)) {
            $map[$arr[$i]] = $i;
            echo "map[arr[i]]=" . json_encode($map[$arr[$i]]);
            echo " arr[i]=" . strval($arr[$i]);
            echo " i=" . strval($i),"\n";
        }
        else {
            $maximumDistance = max($maximumDistance, $i - $map[$arr[$i]]);
            echo "map[arr[i]]=" . json_encode($map[$arr[$i]]);
            echo " i - map[arr[i]]=" . strval(($i - $map[$arr[$i]]));
            echo " i=" . strval($i),"\n";
        }
    }
    return $maximumDistance;
}

$arr = array(7, 1, 4, 3, 1, 5, 3, 4, 9, 1, 3);

echo GetMaxDistance($arr);




/*
run:

map[arr[i]]=0 arr[i]=7 i=0
map[arr[i]]=1 arr[i]=1 i=1
map[arr[i]]=2 arr[i]=4 i=2
map[arr[i]]=3 arr[i]=3 i=3
map[arr[i]]=1 i - map[arr[i]]=3 i=4
map[arr[i]]=5 arr[i]=5 i=5
map[arr[i]]=3 i - map[arr[i]]=3 i=6
map[arr[i]]=2 i - map[arr[i]]=5 i=7
map[arr[i]]=8 arr[i]=9 i=8
map[arr[i]]=1 i - map[arr[i]]=8 i=9
map[arr[i]]=3 i - map[arr[i]]=7 i=10
8

*/

 



answered Dec 17, 2022 by avibootz
edited Dec 17, 2022 by avibootz
...