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 SolutionsPython 3 • JavaScript • TypeScript • Java • C++
Switch tabs or choose Alldef 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