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]



class Solution {
    public int[] productExceptSelf(int[] nums) {
        int n = nums.length;
        int[] producttforward = new int[n]; // stores product of elements after index i
        int[] productbackward = new int[n]; // stores product of elements before index i
        int[] res = new int[n];

        // Forward: product of elements to the right
        producttforward[n - 1] = 1; // last element has no right side
        for (int i = n - 2; i >= 0; i--) {
            producttforward[i] = producttforward[i + 1] * nums[i + 1];
        }

        // Backward: product of elements to the left
        productbackward[0] = 1; // first element has no left side
        for (int j = 1; j < n; j++) {
            productbackward[j] = productbackward[j - 1] * nums[j - 1];
        }

        // Combine forward and backward
        for (int k = 0; k < n; k++) {
            res[k] = producttforward[k] * productbackward[k];
        }

        return res;
    }
}

Comments

Popular posts from this blog

Two Sum II - Input Array Is Sorted

Comparable Vs. Comparator in Java

Increasing Triplet Subsequence