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.)

Source: leetcode | Difficulty: MEDIUM_HARD
Tags: Data structures

Range queries

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

Solutions:
class Solution:

	def productExceptSelf(self, nums):
		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):
		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