码迷,mamicode.com
首页 > 编程语言 > 详细

51构建乘积数组

时间:2018-01-06 18:00:22      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:思路   div   nbsp   int   return   arraylist   length   gpo   [1]   

题目描述

给定一个数组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:
暴力

 1 import java.util.ArrayList;
 2 public class Solution {
 3     public int[] multiply(int[] A) {
 4         int[] B = new int[A.length];
 5         for(int i = 0;i<A.length;i++){
 6             B[i] = 1;
 7             for(int j = 0;j<A.length;j++)
 8                 if(j!=i)
 9                     B[i]*=A[j];
10         }
11         return B;
12     }
13 }

 

思路2:



Bi等于上图矩阵每一行的乘积
上图矩阵可以分为2部分,对角线左边与对角线右边。
对角线2边分别计算,然后将2边的结果乘起来,就是最后的结果。


 1 import java.util.ArrayList;
 2 public class Solution {
 3     public int[] multiply(int[] A) {
 4         int[] B = new int[A.length];
 5         for(int i = 1;i<A.length;i++){
 6             B[0] = 1;
 7             B[i] =B[i-1]*A[i-1];
 8         }
 9         int temp=1;
10         for(int j = A.length-2;j>=0;j--){
11            temp *= A[j+1];
12            B[j]=B[j]*temp;
13         }
14         return B;
15     }
16 }

 

51构建乘积数组

标签:思路   div   nbsp   int   return   arraylist   length   gpo   [1]   

原文地址:https://www.cnblogs.com/zle1992/p/8214674.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!