原题题目
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7a1da3d8ddc5f5da09b836e13bd13881.png)
代码实现(首刷绝大部分自解)
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;
}
};