InterviewHubPRO
Section Overview
Q75

Question 75 of 100

Part 9: Backtracking & Combinatorial Search (73 - 79)

75%
DSA Patterns (Multi-Lang)•Part 9: Backtracking & Combinatorial Search (73 - 79)

Permutations.

In Simple Words: At each level, pick any unused element from nums (track with a visited set or in-place swapping). Recurse until perm size equals $N$.

  • Time: $O(N! \cdot N)$ | Space: $O(N)$
Multi-Language Solutions
Switch tabs or choose All
def permute(nums: list[int]) -> list[list[int]]:
    res = []
    def backtrack(curr, used):
        if len(curr) == len(nums):
            res.append(curr.copy())
            return
        for n in nums:
            if n not in used:
                used.add(n)
                curr.append(n)
                backtrack(curr, used)
                curr.pop()
                used.remove(n)
    backtrack([], set())
    return res