构建乘积数组

给定一个数组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]。不能使用除法。

1
2
3
4
5
6
7
8
9
10
11
12
13
function multiply($numbers)
{
$b = array();
//若原数组0个数大于1个,则用0填充b数组
if (array_count_values($numbers)[0] > 1){
return array_fill(0, count($numbers), 0);
}
for ($i=0; $i<count($numbers); $i++){
//用差集,从原数组去除一个数
$b[$i] = array_product(array_diff($numbers, array_slice($numbers, $i, 1)));
}
return $b;
}