← Backtracking

Micro-Drill #268 — Subsets (include/exclude)

Backtracking Target: 15s

At each index, branch into include or exclude. Generates all 2^n subsets. Alternative: iterative bit-mask approach.

def subsets(nums):
    res = []
    def bt(i, path):
        if i == len(nums):
            res.append(path[:])
            return
        bt(i+1, path)             # exclude
        path.append(nums[i])
        bt(i+1, path)             # include
        path.pop()
    bt(0, [])
    return res

Type it from memory. Go.

Practice Problems

Related Coding Drills

← Micro #267 Micro #269 →