Please see github.com/anusha-murali for all of my repositories.
Problem: 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]
Solution
def productExceptSelf(nums):
import math
if math.prod(nums) == 1:
return nums
res = []
p = math.prod(nums)
if p != 0:
for i in range(len(nums)):
res.append(p//nums[i])
else:
for i in range(len(nums)):
res.append(math.prod(nums[:i] + nums[i+1:]))
return res
Runtime: $O(n)$.
Back to String and Array Problems