238. Product of Array Except Self

從第一個計算到最後一個,再從最後一個往回計算到第一個。一開始要定義一個乘績 1,並每次往前一個值相乘(避免乘到自己),循環一次即可

class Solution {

    /**
     * @param Integer[] $nums
     * @return Integer[]
     */
    function productExceptSelf($nums) {
        $result = [];
        $increment = 1;
        for($index = 0; $index < count($nums); $index++) {
            $increment *= ($nums[$index - 1] ?? 1);
            $result[$index] = $increment;
        }
        $decrement = 1;
        for($index = count($nums) - 1; $index >= 0; $index--) {
            $decrement *= ($nums[$index + 1] ?? 1);
            $result[$index] *= $decrement;
        }

        return $result;
    }
}

Last updated