import java.util.ArrayList;
public class Solution {
//    方法一: 暴力双重循环---O(N^2)
    public int[] multiply(int[] A) {

        int[] B = new int[A.length];
        for (int i = 0; i < A.length; i++) {
            int temp = 1;
            for (int j = 0; j < A.length; j++) {
                if (j != i)
                    temp *= A[j];
            }
            B[i] = temp;
        }
        return B;
    }
}
//        方法二: 分别计算B的以i为界限左右两侧,这样可以保存并使用上一次计算的B[i-1]的值,以此来降低时间复杂度
    public int[] multiply(int[] A) {
        int[] B = new int[A.length];
        B[0] = 1;
        for (int i = 1; i < A.length; i++) {
            B[i] = B[i - 1] * A[i - 1];
        }
        int right = 1;
        for (int i = A.length - 1; i >= 0; i--) {
            B[i] *= right;
            right *= A[i];
        }
        return B;
    }