← Backtracking

Micro-Drill #267 — Permutations backtrack

Backtracking Target: 20s

Permutations use a used[] mask instead of start-index. Each level tries all unused elements. O(n!) results.

def permute(nums):
    res = []
    def bt(path, used):
        if len(path) == len(nums):
            res.append(path[:])
            return
        for i in range(len(nums)):
            if not used[i]:
                used[i] = True
                path.append(nums[i])
                bt(path, used)
                path.pop()
                used[i] = False
    bt([], [False]*len(nums))
    return res

Type it from memory. Go.

Practice Problems

Related Coding Drills

← Micro #266 Micro #268 →