# 46-permutations Try it on leetcode ## Description

Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order.

 

Example 1:

Input: nums = [1,2,3]
Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

Example 2:

Input: nums = [0,1]
Output: [[0,1],[1,0]]

Example 3:

Input: nums = [1]
Output: [[1]]

 

Constraints:

## Solution(Python) ```Python class Solution: # def permute(self, nums: List[int]) -> List[List[int]]: # res = [] # def backtrack(nums,k): # if k == len(nums): # res.append(nums[:]) # return # for i in range(k,len(nums)): # nums[i],nums[k] = nums[k],nums[i] # backtrack(nums,k+1) # nums[k],nums[i] = nums[i],nums[k] # backtrack(nums,0) # return res def permute(self, nums: List[int]) -> List[List[int]]: res = [] n = len(nums) times = 1 for i in range(1, n + 1): times *= i for i in range(1, times + 1): nums = self.nextperm(nums) res.append(nums[:]) return res def nextperm(self, nums: List[int]) -> List[int]: n = len(nums) i = n - 2 while i >= 0 and nums[i + 1] <= nums[i]: i -= 1 if i >= 0: j = n - 1 while j >= 0 and nums[i] >= nums[j]: j -= 1 nums[i], nums[j] = nums[j], nums[i] # reverse from i+1 s = i + 1 e = n - 1 while s < e: nums[s], nums[e] = nums[e], nums[s] s += 1 e -= 1 return nums ```