238. Product of Array Except Self

Description

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].

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

Constraints

  • 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.

Approach

Examples

Input: [1, 2, 3, 4]

Output: [24, 12, 8, 6]

Solutions

/**
 * Time complexity : 
 * Space complexity : 
 */

class Solution {
    public int[] productExceptSelf(int[] nums) {
        int n = nums.length;
        int[] result = new int[n];
        result[0] = 1;
        
        for(int i = 1; i < n; i++) {
            result[i] = result[i-1] * nums[i-1];
        }
        
        int rightSideProduct = 1;
        for(int i = n-1; i >= 0; i--) {
            result[i] *= rightSideProduct;
            rightSideProduct *= nums[i];
        }
        return result;
    }
}

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.)

Last updated

Was this helpful?