题目描述
给定一个数组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[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)
解题思路
本题的目的,就是求出不包含第i个元素,其余元素之积,构成新的数组B。
通过一个例子来说明:

数组A={1,2,3,4,5}, 数组B为上图中,每行除去绿色块其余部分的乘积。通过观察可知,每行的乘积都可分为两部分,即(黄色部分之积) * (粉色部分之积)定义粉色部分之积为C[i],黄色部分之积为D[i].
通过图分析可知,粉色部分C[i] = C[i - 1] * A[i - 1],黄色部分D[i] = D[i + 1] * A[i + 1]
可以先求出粉色部分的积,和黄色部分的积,然后求出数组B。
代码
1 | class Solution |