Backtracking Jan 30, 2024 This is my solution of leetcode 39. Combination Sum. It follows general backtracking algorithm: add new candidate to list check for condition backtrack left candidate def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]: result = [] def backtrack(remaining, starti, comb): # satisfy condition if remaining == 0: result.append(list(comb)) # base case condition - must be within target if remaining < 0: return for i in range(starti, len(candidates)): # extend the combination candidate = candidates[i] comb.append(candidate) # check for sum backtrack(remaining - candidate, i, comb) # backtrack left item comb.pop() backtrack(target, 0, []) return result