剑指offer66题——构建乘积数组
题目描述:给定一个数组 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]。要求不能使用除法。
思路:(说的无法比这个题解更清晰明白了,一句话就是分成i的左右两部分,两部分做乘积就是答案)
public int[] multiply(int[] A) { int n = A.length; int[] res = new int[n]; //分成两个部分 //i左边 部分A[1]...A[i-1] for (int i = 0, P = 1; i < n; P *= A[i],i++) { res[i] = P; //res[0] = 1, res[1] = A[0], res[2] = A[0] * A[1],res[3] = A[0]*A[1]*A[2] } //i右边 部分A[i+1]....A[n-1] for (int i = n-1, P = 1;i>=0; P *= A[i],i--){ res[i] *= P; //左部分*右部分 } return res; }
学习的博客多用于在笔记中,防止笔记过于臃肿,所以将样例及运行结果放在博客中,后以超链接的形式记录在笔记中,所以有些博文过于单薄。如果有小伙伴遇到问题欢迎评论,看到就会回复,学渣一枚,加油努力。