/**
* 思路:先从前向后遍历数组,计算nums[i]之前的数据的乘积 left[i], left[i] = left[i-1] * nums[i-1], left[0] = 1
* 然后再从后向前遍历数组,基于left数组计算nums[i]前后各数的乘积。
* @param Integer[] $nums
* @return Integer[]
*/
function productExceptSelf($nums) {
$left[0] = 1;
$len = count($nums);
if ($len == 1) {
return [1];
}
for($i=1; $i<$len; $i++) {
$left[$i] = $left[$i-1] * $nums[$i-1];
}
$right = 1;
for($j=$len-1; $j>=0; $j--) {
$left[$j] = $left[$j] * $right;
$right = $nums[$j] * $right;
}
return $left;
}