Given an array nums of n integers where n > 1,  return an array output such that output[i] is equal to the product of all the elements of nums except nums[i].

Example:


Input:  [1,2,3,4]
Output: [24,12,8,6]


Note: Please solve it without division and in O(n).

Follow up:
Could you solve it with constant space complexity? (The output array does not count as extra space for the purpose of space complexity analysis.)

Difficulty: interview

Starter code:

class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
        

Solutions:
class Solution:
     def productExceptSelf(self, nums):
         """
         :type nums: List[int]
         :rtype: List[int]
         """
         nums0 = nums.copy()
         son = 1
         if 0 in nums0:
             nums0.remove(0)
             for i in nums0:
                 son *= i
             
             
         pro = 1
         for i in nums:
             pro *= i
         result = []
         for i in nums:
             if i == 0:
                 result.append(son)
             else:
                 result.append(pro//i)
         return result

class Solution:
     def productExceptSelf(self, nums):
         """
         :type nums: List[int]
         :rtype: List[int]
         """
         p = 1
         result = []
         for i in range(0, len(nums)):
             result.append(p)
             p = p * nums[i]
             
         p = 1
         
         for i in range(len(nums)-1, -1, -1):
             result[i] = result[i] * p
             p = p * nums[i]
         
         return result