Product of Array Except Self — Prefix + Suffix Products
Advertisement
Problem
Return array where ans[i] = product of all elements except nums[i]. O(n) time, O(1) extra space.
Solutions
Python
class Solution:
def productExceptSelf(self, nums: list[int]) -> list[int]:
n=len(nums); res=[1]*n
prefix=1
for i in range(n): res[i]=prefix; prefix*=nums[i]
suffix=1
for i in range(n-1,-1,-1): res[i]*=suffix; suffix*=nums[i]
return res
C++
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums){
int n=nums.size(); vector<int> res(n,1);
int p=1; for(int i=0;i<n;i++){res[i]=p;p*=nums[i];}
p=1; for(int i=n-1;i>=0;i--){res[i]*=p;p*=nums[i];}
return res;
}
};
Complexity
- Time: O(n) | Space: O(1) extra
Advertisement