Introduction

The Product of Array Except Self is a very popular DSA interview question. It is commonly asked because it tests your understanding of arrays, prefix calculations, and space optimization.

In this problem, you are asked to compute the product of all elements of an array except the current element, without using the division operator.

This article explains the solution in simple words, with clear examples and interview-ready code.

What is the Product of Array Except Self Problem?

You are given an integer array nums. You need to return a new array answer such that:

Example

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

Explanation

Why Division is Not Allowed

A simple solution using total product and division will fail in many cases:

So, we must find an alternative approach.

Brute Force Approach (Not Recommended)

In the brute-force method, for each index, we multiply all other elements.

Drawbacks

This approach is not suitable for interviews.

Optimized Approach Using Prefix and Suffix Product

The best solution uses prefix product and suffix product.

Idea

This avoids division and reduces time complexity.

Step-by-Step Explanation

Steps:

  1. Create an array answer initialized with 1

  2. Traverse from left to right and store prefix product

  3. Traverse from right to left and multiply suffix product

  4. Store final result in answer

Dry Run Example

Array: [1, 2, 3, 4]

Prefix pass:

Suffix pass:

Final Answer = [24, 12, 8, 6]

Code Implementation

C++ Code

vector<int> productExceptSelf(vector<int>& nums) {
    int n = nums.size();
    vector<int> answer(n, 1);

    int prefix = 1;
    for (int i = 0; i < n; i++) {
        answer[i] = prefix;
        prefix *= nums[i];
    }

    int suffix = 1;
    for (int i = n - 1; i >= 0; i--) {
        answer[i] *= suffix;
        suffix *= nums[i];
    }

    return answer;
}

Java Code

public int[] productExceptSelf(int[] nums) {
    int n = nums.length;
    int[] answer = new int[n];
    Arrays.fill(answer, 1);

    int prefix = 1;
    for (int i = 0; i < n; i++) {
        answer[i] = prefix;
        prefix *= nums[i];
    }

    int suffix = 1;
    for (int i = n - 1; i >= 0; i--) {
        answer[i] *= suffix;
        suffix *= nums[i];
    }

    return answer;
}

Python Code

def productExceptSelf(nums):
    n = len(nums)
    answer = [1] * n

    prefix = 1
    for i in range(n):
        answer[i] = prefix
        prefix *= nums[i]

    suffix = 1
    for i in range(n - 1, -1, -1):
        answer[i] *= suffix
        suffix *= nums[i]

    return answer

Time and Space Complexity

This solution is efficient and interview-friendly.

Edge Cases to Consider

Always test these cases.

Common Interview Variations

Summary

The Product of Array Except Self problem is a classic DSA question that teaches you how to optimize array calculations without using division. By using prefix and suffix products, you can solve this problem efficiently in linear time and constant space. Understanding this approach will help you solve many related problems and perform confidently in coding interviews.