构建乘积数组

来源:互联网 发布:扫描网络摄像头ip 编辑:程序博客网 时间:2024/06/08 08:39


Description:给定一个数组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[i]的值可以看做是一个主对角线值为1的矩阵中每一行的乘积。先算下三角中的连乘,在把上三角中的元素乘进去。


import java.util.ArrayList;public class Solution {    public int[] multiply(int[] A) {        int n = A.length;        int[] b = new int[n];        if (n == 0) return b;        b[0] = 1;        for (int i = 1; i < n; i++) {            b[i] = b[i -1] * A[i-1];        }        int tmp = 1;        for (int i = n - 1; i >= 0; i--) {            b[i] *= tmp;            tmp *= A[i];        }        return b;    }}