← Backtracking

Micro-Drill #190 — Combination sum II (no reuse, skip dupes)

Backtracking Target: 15s

No reuse: recurse with i+1. Skip duplicates: if i > start and same as previous, skip. Must sort first.

def combinationSum2(candidates, target):
    res = []
    candidates.sort()
    def backtrack(start, path, remaining):
        if remaining == 0:
            res.append(path[:])
            return
        for i in range(start, len(candidates)):
            if candidates[i] > remaining: break
            if i > start and candidates[i] == candidates[i-1]: continue
            path.append(candidates[i])
            backtrack(i + 1, path, remaining - candidates[i])
            path.pop()
    backtrack(0, [], target)
    return res

Type it from memory. Go.

Practice Problems

Related Coding Drills

← Micro #189 Micro #191 →