题目描述
给定一个数组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]。不能使用除法。
C++
class Solution {
public:
vector<int> multiply(const vector<int>& A)
{
int n=A.size();
vector<int> left(n,0);
left[0]=A[0];
for(int i=1;i<n-1;i++)
{
left[i]=left[i-1]*A[i];
}
vector<int> right(n,0);
right[n-1]=A[n-1];
for(int i=n-2;i>0;i--)
{
right[i]=right[i+1]*A[i];
}
vector<int> res;
for(int i=0;i<n;i++)
{
if(i==0)
{
res.push_back(right[i+1]);
}
else if(i==n-1)
{
res.push_back(left[i-1]);
}
else
{
res.push_back(left[i-1]*right[i+1]);
}
}
return res;
}
};