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:
1 <= nums.length <= 6
-10 <= nums[i] <= 10
All the integers of nums are unique.
Solution
Iterate, the core function is f = each_num + f(remaining_nums)
Time complexity:
o
(
n
!
)
o(n!)
o(n!)
Space complexity:
o
(
n
)
o(n)
o(n)
Code
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
if len(nums) == 1:
return [nums]
res = []
for index, item in enumerate(nums):
next_permutation = self.permute(nums[:index] + nums[index + 1:])
res += [[item] + np for np in next_permutation]
return res