php实现构建排除当前元素的乘积数组方法

构建乘积数组

给定一个数组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. 这题的意思是 B数组的元素是A数组中所有元素的乘积,但是要排除掉当前元素
  2. A数组在i元素左右分成两部分,分别相乘
  3. left数组是 A[0]…A[n-1], right数组是A[1]…A[n]
  4. 组合出新的数组
  $A=array(1,2,3,4);    multiply($A);    function multiply($numbers){        $len=count($numbers);        $res=array();        //1. 组合左边数组        $left=array();        $left[0]=1;        for($i=1;$i<$len;$i++){            $left[$i]=$left[$i-1]*$numbers[$i-1];        }               //2. 组合右边数组        $right=array();        $right[$len-1]=1;        for($j=$len-2;$j>=0;$j--){            $right[$j]=$right[$j+1]*$numbers[$j+1];        }               //3. 组合新数组,整好可以实现A[0]*A[i-1]*A[i+1]*A[n-1]排除当前i元素        for($i=0;$i<$len;$i++){            $res[$i]=$left[$i]*$right[$i];        }          return $res;    }
© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论