Problem
The Product of Array Except Self is a popular coding problem featured in LeetCode 75 that challenges your understanding of array manipulation without using division.

Table of Contents
You are given an integer array nums of length n, and you are required to return an array answer such that:
answer[i]is equal to the product of all elements ofnumsexceptnums[i].
Restrictions:
- You must solve it without using division.
- The solution should run in O(n) time.
- Space complexity should ideally be O(1) (excluding the output array).
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]
Constraints:
2 <= nums.length <= 10^5-30 <= nums[i] <= 30- The product of any prefix or suffix of the array fits in a 32-bit integer.
Python Solution-Product of Array Except Self
class Solution:
def productExceptSelf(self, nums: List[int]) -> List[int]:
n = len(nums)
# Initialize left and right product arrays
left_products = [1] * n
right_products = [1] * n
# Calculate left products
left_product = 1
for i in range(1, n):
left_product *= nums[i - 1]
left_products[i] = left_product
# Calculate right products
right_product = 1
for i in range(n - 2, -1, -1):
right_product *= nums[i + 1]
right_products[i] = right_product
# Combine left and right products to get the final result
result = [left_products[i] * right_products[i] for i in range(n)]
return result
Step-by-Step Explanation
Step 1: Initialize Arrays
left_products = [1] * n
right_products = [1] * n
- These arrays will hold the prefix (left) and suffix (right) products for each index.
- We start with all values as
1since multiplying by 1 doesn’t affect the result.
Step 2: Calculate Prefix (Left) Products
left_product = 1
for i in range(1, n):
left_product *= nums[i - 1]
left_products[i] = left_product
- For each element, store the product of all elements to its left.
Example (for [1, 2, 3, 4]):
left_products = [1, 1, 2, 6]
Why?
left_products[2] = nums[0] * nums[1] = 1 * 2 = 2
Step 3: Calculate Suffix (Right) Products
right_product = 1
for i in range(n - 2, -1, -1):
right_product *= nums[i + 1]
right_products[i] = right_product
- For each element, store the product of all elements to its right.
Example (for [1, 2, 3, 4]):
right_products = [24, 12, 4, 1]
right_products[1] = nums[2] * nums[3] = 3 * 4 = 12
Step 4: Combine Left and Right Products
result = [left_products[i] * right_products[i] for i in range(n)]
- Multiply the prefix and suffix product for each index.
Final Output for [1,2,3,4]:
result = [24, 12, 8, 6]
Time and Space Complexity
- Time Complexity:
O(n)- We traverse the array 3 times (left, right, and final product).
- Space Complexity:
O(n)- Due to
left_products,right_products, andresult.
- Due to
You can optimize space to
O(1)(excluding result) by reusing theresultarray and computing right products in-place.
This is a classic prefix-suffix product problem that demonstrates how to manipulate arrays without using division and still get the correct result efficiently.
1 thought on “LeetCode75: Python Solution-Product of Array Except Self”