Combination Sum Visualizer & Step-by-Step Algorithm Solution

Find all unique combinations of candidate numbers that sum to target using recursive backtracking on the decision tree.

Category: backtracking | Difficulty: Medium

Tags: Backtracking, Recursion, Array, Decision Tree, LeetCode 39

Combination Sum

[]
Candidates Array
2
0
3
1
6
2
7
3
100%
state
candidates[2, 3, 6, 7]
target7
curr[]
found0
Initialization
1/162
Explanation

Start combinationSum with candidates = [2, 3, 6, 7] and target = 7.

Source Code
1function combinationSum(candidates: number[], target: number): number[][] {
2 const result: number[][] = [];
3 function backtrack(curr: number[], sum: number, start: number) {
4 if (sum === target) {
5 result.push([...curr]);
6 return;
7 }
8
9 if (sum > target) return;
10
11 for (let i = start; i < candidates.length; i++) {
12 curr.push(candidates[i]);
13 backtrack(curr, sum + candidates[i], i);
14 curr.pop();
15 }
16 }
17 backtrack([], 0, 0);
18 return result;
19}