238. Product of Array Except Self
MediumLeetCodeGiven 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 input is generated such that
answer[i]is guaranteed to fit in a 32-bit integer.
How to solve the problem
- Two-Pass Array Traversal
Code
python
class Solution:
def productExceptSelf(self, nums: List[int]) -> List[int]:
n = len(nums)
res = [1] * n # Output array, initialized with 1s
# First pass: accumulate product of all elements to the left of each index
left = 1
for i in range(n):
res[i] = left # At index i, res[i] is the product of all elements to the left
left *= nums[i] # Update left with current element for next iteration
# Second pass: accumulate product of all elements to the right of each index
right = 1
for i in range(n - 1, -1, -1):
res[i] *= right # Multiply with the product of all elements to the right
right *= nums[i] # Update right with current element for next iteration
return resComplexity
Approach 1: Two-Pass Array Traversal
Time complexity: O(n)
- We traverse the array twice, each pass takes O(n) time
Space complexity: O(1)
- We only use a constant amount of extra space (excluding the output array)
- The output array is not counted as extra space as per problem requirements
Comments
No comments yet. Be the first to comment!