构建乘积数组

/**
 思路:
     B0     | 1 A1 A2 A3 A4 ... A(n-2) A(n-1)
     B1     | A0 1 A2 A3 A4 ... A(n-2) A(n-1)
     B2     | A0 A1 1 A3 A4 ... A(n-2) A(n-1)
     B3     | A0 A1 A2 1 A4 ... A(n-2) A(n-1)
     B4     | A0 A1 A2 A3 1 ... A(n-2) A(n-1)
     ...
     B(n-2) | A0 A1 A2 A3 A4 ... 1 A(n-1)
     B(n-1) | A0 A1 A2 A3 A4 ... A(n-2) 1
*/
public int[] multiply(int[] A) {
    if(A==null || A.length==0){
        return null;
    }

    int n=A.length;
    int[] B=new int[n];

    //计算左下角乘积
    B[0]=1;
    for(int i=1;i<n;i++){
        B[i]=B[i-1]*A[i-1];
    }

    //计算右上角乘积
    int product=1;
    for(int i=n-2;i>=0;i--){
        product*=A[i+1];
        B[i]=B[i]*product; //最后是获取 B[0]=A[1]*A[2]*A[3]*...*A[n-1]
    }
    return B;
}

https://www.mianshi.online,[https://www.i9code.cn](

本文由博客一文多发平台 OpenWrite 发布!

逃跑的眼镜_bvbEK5
7 声望0 粉丝