Faaez Razeen

Combination Sum

  • 2 min read
  • LC-Medium
  • Backtracking

3 years ago

Solution

TimeSpaceExplanation
O()O()
def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]: ans = [] def dfs(i, cur, cur_sum): if cur_sum > target or i == len(candidates): return if cur_sum == target: ans.append(cur[:]) return cur.append(candidates[i]) dfs(i, cur, cur_sum + candidates[i]) cur.pop() dfs(i + 1, cur, cur_sum) dfs(0, [], 0) return ans

Cleaner Solution

def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]: ans = [] def dfs(i, cur, cur_sum): if i == len(candidates) or cur_sum > target: return if cur_sum == target: ans.append(cur) return dfs(i, cur + [candidates[i]], cur_sum + candidates[i]) dfs(i + 1, cur, cur_sum) dfs(0, [], 0) return ans