题目描述:
给定一个数组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]。不能使用除法。
分析:
分别计算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> a;
int ASize = A.size();
if(ASize == || ASize == ) return a;
vector<int> b;
b.push_back(A[ASize - ]);
for(int i = ; i < ASize; i++) {
b.push_back(b[i - ]*A[ASize - - i]);
}
a.push_back(b[ASize - ]);
int tmp = A[];
for(int i = ; i < ASize - ; i++) {
a.push_back(tmp * b[ASize - i - ]);
tmp *= A[i];
}
a.push_back(tmp);
return a;
}
};