Product of Array Except Self — Prefix + Suffix Products

Sanjeev SharmaSanjeev Sharma
1 min read

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

Sanjeev Sharma

Written by

Sanjeev Sharma

Full Stack Engineer · E-mopro