题目描述:给定一个数组 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]。不能使用除法。
代码:
class Solution {
public:
vector<int> constructArr(vector<int>& a) {
int tmp=1,n=a.size();
vector<int>ans(n,1);
for(int i=0;i<n-1;++i)
ans[i+1]=tmp*=a[i];
tmp=1;
for(int i=n-2;i>=0;--i)
ans[i]*=tmp*=a[i+1];
return ans;
}
};
本文介绍了一种不使用除法构建特殊数组的方法。给定数组A,构建数组B,其中B[i]等于A中除A[i]外所有元素的乘积。通过两次遍历实现,先从左到右计算前缀乘积,再从右到左计算后缀乘积。
658

被折叠的 条评论
为什么被折叠?



