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].
Input: nums = [1,2,3,4] Output: [24,12,8,6]
The first idea you are likely to come up with is to find the product of all the elements in the array and divide the product by nums[i] to get the product at a given i.
However, the questions requires that we do not use the division operator.
Another approach would be to maintain a prefix that stores the product of elements before array[i] and a postfix that stores the product of elements occuring after array[i].
def productExceptSelf(self, nums: List[int]) -> List[int]: result =  * (len(nums)) prefix = 1 postfix = 1 for i in range(len(nums)): result[i] = prefix prefix *= nums[i] for i in range(len(nums) - 1, -1, -1): result[i] *= postfix postfix *= nums[i] return result
When calculating the postfix we iterate through the array with -1 step. A negative step value in a range() function generates the sequence of numbers in reverse order.
This solution uses O(1) space complexity and O(n) time complexity.
Happy learning !!!
Top comments (0)