剑指offer—构建乘积数组

来源:互联网 发布:服务器坏了 raid 数据 编辑:程序博客网 时间:2024/06/05 03:32

题目描述
给定一个数组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]。不能使用除法。

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

这里写图片描述

整个过程就是先求图中的下三角作为数组B的值,在求上三角的值乘上之前B的值,得到最终数组B的值