Product of Array Except Self - Codeprg

Breaking

programing News Travel Computer Engineering Science Blogging Earning

Sunday, 9 August 2020

Product of Array Except Self

 
Product of Array Except Self

 

 Product of Array Except Self

Given an array nums of n integers where n > 1,  return an array output such that output[i] is equal to the product of all the elements of nums except nums[i].

Example:

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

Constraint: It's guaranteed that the product of the elements of any prefix or suffix of the array (including the whole array) fits in a 32 bit integer.

Note: Please solve it without division and in O(n).

Follow up:
Could you solve it with constant space complexity? (The output array does not count as extra space for the purpose of space complexity analysis.)

 

class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) {
        long long int p=1,z=0;
        vector<int> v;
        for(int i : nums)
            if(i!=0)
               p=p*i;
             else
                ++z;
        for(int i:nums)
            if(z>1)
                v.push_back(0);
             else if(z==1)
             {
                 if(i==0)
                     v.push_back(p);
                 else
                     v.push_back(0);
             }
            else
            v.push_back(p/i);
     
        return v;
    }
};