---
tags: data_structure_python
---
# Permutations <img src="https://img.shields.io/badge/-easy-brightgreen">
Given a collection of distinct integers, return all possible permutations.
**Example:**
```
Input: [1,2,3]
Output:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
```
## Solution
```python=
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
def __permute(nums, n, chosen, perms,res):
if len(perms) == n:
res.append(perms[:])
else:
for i in range(n):
if chosen[i]:
continue
else:
chosen[i] = True
perms.append(nums[i])
__permute(nums, n, chosen, perms, res)
perms.pop()
chosen[i] = False
n = len(nums)
res = []
__permute(nums, n, [False]*n, [], res)
return res
```