题目
给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]*A[i+1]…*A[n-1]。不能使用除法。
题解
看一张图片搞懂这个问题。
![]()
每个B[i]就是每一行的乘积,所以可以先计算下三角,然后计算上三角。就可以求出全部。
代码
<?php
function multiply($numbers)
{
if($numbers==null|count($numbers)<=1)return null;
$arrayB = array();
if(count($numbers)!=0){
$arrayB[0]=1;
for($i=1;$i<count($numbers);$i++){
$arrayB[$i]=$arrayB[$i-1]*$numbers[$i-1];
}
$temp=1;
for($j=count($numbers)-2;$j>=0;$j--){
$temp *=$numbers[$j+1];
$arrayB[$j]*=$temp;
}
}
return $arrayB;
}