Solution 1
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
perms = [[]]
for num in nums:
new_perms = []
for perm in perms:
for i in range(len(perm)+1):
new_perms.append(perm[:i] + [num] + perm[i:])
perms = new_perms
return perms
Time complexity is O(n!). Space complexity is O(1).
Solution 2
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
if len(nums) <= 1:
return [nums]
perms = []
for i, num in enumerate(nums):
n = nums[:i] + nums[i+1:]
for y in self.permute(n):
perms.append([num] + y)
return perms
Time complexity is O(n!). Space complexity is O(1).