天天看點

面試題66:建構乘積數組

public class No66multiply {

    public static void main(String[] args) {

       No66multiply n = new No66multiply();

       int[] A = {1,1,2,3,4,5,6};

       int[] B = n.multiply(A);

       for (int i = 0; i < B.length ; i++) {

           System.out.print(B[i] + ",");

       }

    }

    public int[] multiply(int[] A) {

       int length = A.length;

       int [] B = new int[length];

       if (length != 0) {

           B[0] = 1;

           //計算下三角連乘

           for (int i = 1; i < length; i++) {

              B[i] = B[i-1] * A[i-1];

           }

           int temp = 1;

           //計算上三角連乘

           for (int j = length - 2; j >= 0; j--) {

              temp *= A[j+1];

              B[j] *= temp;

           }

       }

       return B;

    }

}