题目

给定一个数组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[i] = A[0]A[1]...A[i-1]A[i+1]...A[n-1],即除去 A[i] 的所有值相乘
可以将 A[i] 设为1,再用 for 循环将 A 中所有值相乘
临时变量 temp 先存储 A[i] 的值,然后再赋回来。

代码

public int[] multiply(int[] A) {
    int[] B = new int[A.length];
    int temp = 0;
    for (int i = 0; i < A.length; i++) {
        temp = A[i];
        A[i] = 1;
        B[i] = 1;
        for (int j = 0; j < A.length; j++) {
            B[i] *= A[j];
        }
        A[i] = temp;
    }
    return B;
}