Source : Click here
Problem Statement:
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]
Constraints:
2 <= nums.length <= 10^5
-30 <= nums[i] <= 30
- The product of any prefix or suffix ofÂ
nums
 is guaranteed to fit in a 32-bit integer.
Follow up: Can you solve the problem in O(1)
 extra space complexity? (The output array does notcount as extra space for space complexity analysis.)
Solution:
Thought process:
- Brute force - O(n^2)
- Division approach
- Calculate the product of all the numbers.
- Divide nums[i] for each i to get the product of all the number except
ith
position. - Identify the edge cases where
0
is present.- Can’t divide by zero.
- product turns
0
if anyone number is0
.
- Calculate prefix product (excluding the number at
ith
position) and suffix product (excluding the number atith
position). Forith
result : prefix[i] x suffix[i].
- For post and prefix product we don’t need to store in different arrays. Let’s remove the arrays one by one.
- Similarly, we don’t need pre array as well, we can keep the result of pre array in ans array itself.