剑指Offer系列-面试题52:构建乘积数组

来源:互联网 发布:简历制作软件 app 编辑:程序博客网 时间:2024/06/05 08:39

题目:给定一个数组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左边的数,知道乘到i,然后乘i右边的。

代码:

public int[] multiply(int[] A) {int length = A.length;int[] b = new int[length];if (length < 2) {return b;}b[0] = 1;// 先乘i左边的数for (int i = 1 ; i < length ; i++) {b[i] = b[i - 1] * A[i - 1];}int tmp = 1;// 再乘i右边的数for (int i = length - 2 ; i >= 0 ; i--) {tmp *= A[i + 1];b[i] *= tmp;}return b;}


0 0
原创粉丝点击