構建乘積數組

題目描述:

給定一個數組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]。

樣例:

輸入:[1, 2, 3, 4, 5]
輸出:[120, 60, 40, 30, 24]

分析:

首先計算數組B中每個下標下左側元素的乘積,
從i=1開始,因爲B[0]左側沒有元素:
B[1]=A[0]
B[2]=B[1]*A[1]
B[3]=B[2]*A[2]

B[n-1]=B[n-2]A[n-2]
然後從倒數第二個位置開始計算右側元素的乘積
B[n-2]*=A[n-1]
B[n-3]
=A[n-1]*A[n-2]

B[0]=A[n-1]*A[n-2]*…*A[2]
B[0]=A[n-1]*A[n-2]*…A[2]*A[1]

public int[] multiply1(int[] A) {
        int[] B=new int[A.length];
        if(A==null||A.length==0)
        	return B;
        B[0]=1;
        for(int i=1;i<A.length;i++) {
        	B[i]=B[i-1]*A[i-1];
        }
        int left=1;
        for(int i=A.length-2;i>=0;i--) {
            left*=A[i+1];
        	B[i]*=left;
        }
        return B;
    }
發佈了124 篇原創文章 · 獲贊 11 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章