238. Product of Array Except Self

Approach 1: Calculate products from both sides

In a single for loop keep multiplying terms from left side and right side respectively and multiply those two to get the required product

class Solution(object):
def productExceptSelf(self, nums):
"""
https://leetcode.com/problems/product-of-array-except-self/description/
:type nums: List[int]
:rtype: List[int]
"""
result = [1] * len(nums)
leftsum = 1
rightsum = 1
for i in range(len(nums)):
result[i] *= leftsum
result[len(nums)-i-1] *= rightsum
leftsum *= nums[i]
rightsum *= nums[len(nums)-i-1]
return result

Time Complexity: O(N)

Space Complexity: O(1)

Illegal Approach: Division

def productExceptSelf(nums):
"""
https://leetcode.com/problems/product-of-array-except-self/#/description :type nums: List[int]
:rtype: List[int]
""" product=1
for num in nums:
if num==0:
product=0
break
product=product*num
if product==0:
return [0]*len(nums)
return [int(product/x) for x in nums]

Time Complexity: O(N)

Space Complexity: O(1)