Permutations

Solution
class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        result = []
        
        def backtrack(current):
            if len(current) == len(nums):
                result.append(current.copy())
                return
            
            for num in nums:
                if num not in current:
                    current.append(num)
                    backtrack(current)
                    current.pop()
                    
        backtrack([])
        return result

Time Complexity

O(N N!)

Space Complexity

O(N)