Product of Array Except Self
Given an array of n integers where n > 1, nums
, return an array output
such that output[i]
is equal to the product of all the elements of nums
except nums[i]
.
Solve it without division and in O(n).
For example, given [1,2,3,4]
, return [24,12,8,6]
.
Follow up:
Could you solve it with constant space complexity? (Note: The output array does not count as extra space for the purpose of space complexity analysis.)
class Solution {
public:
//基本思想是两个数组left,right,分别保存从左到右 从右到左的乘积,然后对应位置相乘即可
//为了优化空间 左边的数组可以用一个变量代替 右边的数组可以复用结果数组
vector<int> productExceptSelf(vector<int>& nums) {
int len=nums.size();
vector<int> res(len,0);
if(len<2)
return res;
int i;
res[len-1]=1;//右边的乘积
for(i=len-1;i>0;i--)
res[i-1]=res[i]*nums[i];
int left=1;//左边的乘积
for(i=0;i<len;i++)
{
res[i]*=left;
left=left*nums[i];
}
return res;
}
};