53.建設製品アレー

件名の説明:

  配列Aを与えられた[0,1、...、N- 1]、 配列B [0,1、...、N-構築してください 1]、 Bが要素B [I] = A [あり0] Aの[1] ... [-I。1] A [私は+ 1] ... [N - 1]。あなたは分裂を使用することはできません。

アイデアの分析:

  私たちは、バイ[0]の=置くことができるAの[1] .... [-I。1] Aを[私は+ 1] ..A [1-N-] [0]として Aの[1] ... 。 [-I 1]及び[I + 1] * ... [N-1]は、 二つの部分の積です。従って、配列Bは行列を使用して作成することができます。

B0 1 A1 A2 ... -2 -1
B1 A0 1 A2 ... -2 -1
B2 A0 A1 1 ... -2 -1
... A0 A1 A2 1 -2 -1
BN-2 A0 A1 A2 ... 1 -1
BN-1 A0 A1 A2 ... -2 1

C [I]の定義= [0] ... [-I。1]。トップダウンの順序を算出することができ、Dの定義は、[I] = Aは、[Iは、+ 1] ... [N - 1]。ボトムアップを計算することができます。

コード:

import java.util.ArrayList;
public class Solution {
    public int[] multiply(int[] A) {
        int []B=new int [A.length];
        if(A==null||A.length==0)
            return null;
        B[0]=1;
        for(int i=1;i<B.length;i++){
            B[i]=B[i-1]*A[i-1];
        }
        int temp=1;
        for(int j=B.length-2;j>=0;j--){
            temp=temp*A[j+1];
            B[j]=B[j]*temp;
        }
        return B;
    }
}

おすすめ

転載: www.cnblogs.com/yjxyy/p/10935865.html