看见一个比较不错的评论
查看代码
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
int n=nums.size();
int left=1,right=1; //left:从左边累乘,right:从右边累乘
vector<int> res(n,1);
for(int i=0;i<n;++i) //最终每个元素其左右乘积进行相乘得出结果
{
res[i]*=left; //乘以其左边的乘积
left*=nums[i];
res[n-1-i]*=right; //乘以其右边的乘积
right*=nums[n-1-i];
}
return res;
}
};
我的代码,凑合
查看代码
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
vector<int>temp_1(nums.size()+2);
vector<int>temp_2(nums.size()+2);
vector<int>result(nums.size());
int n = nums.size()-1;
for(int i=0;i<temp_1.size();i++){
temp_1[i]++;
temp_2[i]++;
}
for(int i=0;i<nums.size();i++){
temp_1[i+1] = temp_1[i]*nums[i];
temp_2[n-i+1] = temp_2[n-i+2]*nums[n-i];
}
for(int i=0;i<=n;i++){
result[i] = temp_2[i+2]*temp_1[i];
}
return result;
}
};