How to product of array except self (arr[i] is equal to the product of all the elements except arr[i]) in PHP

1 Answer

0 votes
/*
    Computes product of array except self.
    nums   = input array
    size   = number of elements
    returns an array containing the result
*/
function productExceptSelf(array $nums) {
    $size = count($nums);
    $answer = array_fill(0, $size, 1);

    // ---- Prefix products ----
    // answer[i] gets product of all elements before i
    $prefix = 1;
    for ($i = 0; $i < $size; $i++) {
        $answer[$i] = $prefix;   // store prefix product
        $prefix *= $nums[$i];    // update prefix
        // Example for nums = [5,2,3,4]:
        // prefix values: 1, 5, 10, 30
    }

    // ---- Suffix products ----
    // Multiply each answer[i] by product of all elements after i
    $suffix = 1;
    for ($i = $size - 1; $i >= 0; $i--) {
        $answer[$i] *= $suffix;  // combine prefix * suffix
        $suffix *= $nums[$i];    // update suffix
        // suffix values: 1, 4, 12, 24, 120
        // final answer: 24, 60, 40, 30
        // 24 (24*1) 60 (12*5) 40 (10*4) 30 (30*1)
    }

    return $answer;
}

// Main program
$arr = [5, 2, 3, 4];

$result = productExceptSelf($arr);

echo "Result: ";
foreach ($result as $x) {
    echo $x . " ";
}



/*
run:

Result: 24 60 40 30 

*/

 



answered Jan 3 by avibootz

Related questions

...