# Product of array excluding self

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

The product of any prefix or suffix of nums is **guaranteed** to fit in a **32-bit** integer.

You must write an algorithm that runs in O(n) time and without using the division operation.

```
class Solution:
def productExceptSelf(self, nums: List[int]) -> List[int]:
length=len(nums)
sol=[1]*length
pre = 1
post = 1
for i in range(length):
sol[i] *= pre
pre = pre*nums[i]
sol[length-i-1] *= post
post = post*nums[length-i-1]
return(sol)
```

## Related Problems

You are given a string s. You can convert s to a palindrome by adding characters in front of it.

Return *the shortest palindrome you can find by performing this transformation*.

Given a string s, find the length of the **longest** **substring **without repeating characters.

Given a string **S** and an integer **K**, return *the length of the longest substring of* **S** *that contains at most* **K** **distinct*** characters*.

Given an integer array nums, you need to find one **continuous subarray** such that if you only sort this subarray in non-decreasing order, then the whole array will be sorted in non-decreasing order.

Return *the shortest such subarray and output its length*.