【LeetCode & 劍指offer刷題】數組題12:66 構建乘積數組
阿新 • • 發佈:2019-01-05
描述 pty height tex ont weight 因此 -c 分布
[i] = B[i-1] * A[i-1]; //計算連乘值
}
//計算上三角連乘
int temp = 1;
for(int j = B.size()-1; j>=1; j-- ) //j=n-1~1
{
temp *= A[j]; //計算連乘值
B[j-1] *= temp;
}
return B;
}
};
66 構建乘積數組
66 構建乘積數組
66 構建乘積數組題目描述
給定一個數組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]。不能使用除法。 思路: B[i]的值可以看作下圖的矩陣中每行的乘積。 下三角用連乘可以很容求得,上三角,從下向上也是連乘。 因此我們的思路就很清晰了,先算下三角中的連乘,即我們先算出B[i]中的一部分,然後倒過來按上三角中的分布規律,把另一部分也乘進去。class Solution { public: vector<int> multiply(const vector<int>& A) { if(A.empty()) return vector<int>(); vector<int> B(A.size()); //計算下三角連乘 B[0] = 1; for(int i = 1; i<B.size(); i++) // i=1~n-1 { B
【LeetCode & 劍指offer刷題】數組題12:66 構建乘積數組