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]
Constraint: It's guaranteed that the product of the elements of any prefix or suffix of the array (including the whole array) fits in a 32 bit integer.
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.)
```

```
func productExceptSelf(nums []int) []int {
lenN := len(nums)
result := make([]int, lenN)
preLeft := 1
for i:= 0; i < lenN; i++ {
result[i] = preLeft
preLeft *= nums[i]
}
preRight := 1
for i:= lenN-1; i >= 0; i-- {
result[i] *= preRight
preRight *= nums[i]
}
return result
}
```