题解 | #构建乘积数组#
构建乘积数组
http://www.nowcoder.com/practice/94a4d381a68b47b7a8bed86f2975db46
用两个数组分别记录当前元素之前的乘积和之后的乘积;最后两个数组对应位置元素相乘即可;
public int[] multiply(int[] A) {
if (A.length == 0 || A.length == 1) {
return null;
}
int len = A.length;
int[] before = new int[len];
int[] after = new int[len];
before[0] = 1;
for (int i = 1; i < len; i++) {
before[i] = before[i - 1] * A[i - 1];
}
after[len - 1] = 1;
for (int i = len - 2; i >= 0; i--) {
after[i] = after[i + 1] * A[i + 1];
}
int[] ans = new int[len];
for (int i = 0; i < len; i++) {
ans[i] = before[i] * after[i];
}
return ans;
}