构建乘积数组-Java实现
构建乘积数组
http://www.nowcoder.com/questionTerminal/94a4d381a68b47b7a8bed86f2975db46
一. 思路
题目要求不能使用除法。根据题意列出一个矩阵,分别计算下三角形以及上三角形,上下三角形相乘即可。如下图:
解释:
下三角形 B[0] = 1; B[1] = A[0] * 1 = A[0] * B[0]; B[2] = A[0] * A[1] * 1 = A[1] * A[0] * 1 = A[1] * B[1] 也就是下三角形的值B[i] = B[i-1] * A[i-1]; 上三角形以此类推
二. 代码
import java.util.ArrayList; public class Solution { public int[] multiply(int[] A) { int length = A.length; int[] B = new int[length]; // 边界 if (A == null || A.length <= 1) return null; // 计算下三角 // 初始化第一行 B[0] = 1; for (int i = 1; i < length; i++) { B[i] = B[i-1] * A[i-1]; } // 计算上三角 // 初始化最后一行(注意,此时B数组已经存储了下三角的值) int temp = 1; for (int i = length-1; i >= 0; i--) { B[i] = temp * B[i]; temp = temp * A[i]; } return B; } }