# 238. Product of Array Except Self

## 238. Product of Array Except Self

Given an integer array `nums`, return an array `answer` such that `answer[i]` is equal to the product of all the elements of `nums` except `nums[i]`.

The product of any prefix or suffix of `nums` is guaranteed to fit in a 32-bit integer.

You must write an algorithm that runs in `O(n)` time and without using the division operation.

Example 1:

```Input: nums = [1,2,3,4]
Output: [24,12,8,6]
```

Example 2:

```Input: nums = [-1,1,0,-3,3]
Output: [0,0,9,0,0]
```

Constraints:

• `2 <= nums.length <= 105`
• `-30 <= nums[i] <= 30`
• The product of any prefix or suffix of `nums` is guaranteed to fit in a 32-bit integer.

Follow up: Can you solve the problem in `O(1) `extra space complexity? (The output array does not count as extra space for space complexity analysis.)

### The solution to the above question

class Solution {
public:
vector<intproductExceptSelf(vector<int>& nums) {
int n=nums.size();
vector<int>pre(n);
vector<int>suff(n);
pre=nums;
suff[n-1]=nums[n-1];
vector<int>ans;

for(int i=1; i<n; i++){
pre[i]=pre[i-1]*nums[i];
}
for(int i=n-2; i>=0; i--){
suff[i]=suff[i+1]*nums[i];
}

ans.push_back(suff);
for(int i=1; i<n-1; i++){
ans.push_back(pre[i-1]*suff[i+1]);
}
ans.push_back(pre[n-2]);
return ans;
}
};