题目描述
给定一个数组 A [ 0 , 1 , . . . , n − 1 ] A[0,1,...,n-1] A[0,1,...,n−1],请构建一个数组 B [ 0 , 1 , . . . , n − 1 ] B[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]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1] B[i]=A[0]∗A[1]∗...∗A[i−1]∗A[i+1]∗...∗A[n−1]。不能使用除法。
参考代码
class Solution {
public:
vector<int> multiply(const vector<int>& A) {
vector<int> B;
int length = A.size();
if(length == 0)
return B;
int curProduct = 1;
for(int i = 0; i < length; i++){
if(i == 0){
B.push_back(curProduct);
curProduct *= A[i];
continue;
}
B.push_back(curProduct);
curProduct *= A[i];
}
curProduct = 1;
for(int i = length-1; i >= 0; i--){
if(i == length-1){
curProduct *= A[i];
continue;
}
B[i] *= curProduct;
curProduct *= A[i];
}
return B;
}
};