解题思路:
1、首先确定A的大小,防止在接下来引用时出现数组越界情况;
2、根据题意可以发现,新数组B中的成员B[i]是A中不包含A[i]的所有元素乘积;
3、先求B【0】即A[1]*...*A[n];
4、接着求B中其他元素,其他元素等于A中相应元素位置之前所有元素的乘积和之后所有元素的乘积,在本算法中分为两部分进行;首尾两部分乘积分别算出来后在相乘即为B中元素;具体代码如下:
class Solution {
public:
vector<int> multiply(const vector<int>& A) {
int n=A.size();
vector<int>B(n);
int i,j,k;
int t=1;
for(i=1;i<n;i++)
{
t*=A[i];
}
B.at(0)=t;
for(i=1;i<n;i++)
{
int pre=1,las=1;
for(j=i;j>0;j--)
{
pre*=A[j-1];
}
for(k=i+1;k<n;k++)
{
las*=A[k];
}
B.at(i)=pre*las;
}
return B;
}
};