當前位置:首頁 > PHP教程 > php數組 > 列表

php實現構建排除當前元素的乘積數組方法

發布:smiling 來源: PHP粉絲網  添加日期:2018-11-18 14:27:42 瀏覽: 評論:0 

構建乘積數組

給定一個數組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數組的元素是A數組中所有元素的乘積,但是要排除掉當前元素

A數組在i元素左右分成兩部分,分別相乘

left數組是 A[0]...A[n-1], right數組是A[1]...A[n]

組合出新的數組

  1. $A=array(1,2,3,4); 
  2.   
  3. multiply($A); 
  4.   
  5. function multiply($numbers){ 
  6.   
  7.     $len=count($numbers); 
  8.   
  9.     $res=array(); 
  10.   
  11.     //1. 組合左邊數組 
  12.   
  13.     $left=array(); 
  14.   
  15.     $left[0]=1; 
  16.   
  17.     for($i=1;$i<$len;$i++){ 
  18.   
  19.         $left[$i]=$left[$i-1]*$numbers[$i-1]; 
  20.   
  21.     }   
  22.   
  23.    
  24.   
  25.     //2. 組合右邊數組 
  26.   
  27.     $right=array(); 
  28.   
  29.     $right[$len-1]=1; 
  30.   
  31.     for($j=$len-2;$j>=0;$j--){ 
  32.   
  33.         $right[$j]=$right[$j+1]*$numbers[$j+1]; 
  34.   
  35.     }   
  36.   
  37.    
  38.   
  39.     //3. 組合新數組,整好可以實現A[0]*A[i-1]*A[i+1]*A[n-1]排除當前i元素 
  40.   
  41.     for($i=0;$i<$len;$i++){ 
  42.   
  43.         $res[$i]=$left[$i]*$right[$i]; 
  44.   
  45.     }  //phpfensi.com 
  46.   
  47.     return $res
  48.   

Tags: php構建 php乘積數組

分享到:

福利彩票25选5开奖结果