原题题目
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210415093053707.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NTAwNTE2,size_16,color_FFFFFF,t_70)
代码实现(首刷绝大部分自解)
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
int size = nums.size();
vector<int> rightnums(nums),leftnums(nums),ret;
for(int left = 0,temp = 1;left<size;++left)
leftnums[left] = (temp*=nums[left]);
for(int right = size-1,temp = 1;right>=0;--right)
rightnums[right] = (temp*=nums[right]);
for(int i=0;i<size;++i)
{
int temp = (i ? leftnums[i-1] : 1) * (i<size-1 ? rightnums[i+1] : 1);
ret.push_back(temp);
}
return ret;
}
};
代码实现(二刷DAY 144 C++自解)
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
vector<int> left(nums.size(),0),right(nums.size(),0),ret(nums.size(),0);
left[0] = nums[0],right[nums.size()-1] = nums[nums.size()-1];
for(int i=1;i<nums.size();++i)
left[i] = left[i-1]*nums[i];
for(int i=nums.size()-2;i>=0;--i)
right[i] = right[i+1]*nums[i];
for(int i=0;i<nums.size();++i)
ret[i] = (i!=nums.size()-1 ? right[i+1] : 1) * (i!=0 ? left[i-1] : 1);
return ret;
}
};