Skip to content

Code:

js
/**
 * @param {number[]} candidates
 * @param {number} target
 * @return {number[][]}
 */
var combinationSum = function (candidates, target) {
    const result = []

    const backtrack = (index = 0, arr = [], sum = 0) => {
        if (sum > target) {
            return
        }

        if (sum === target) {
            return result.push([...arr])
        }

        for (let i = index; i < candidates.length; i++) {
            arr.push(candidates[i])
            backtrack(i, arr, sum + candidates[i])
            arr.pop()
        }

    }

    backtrack()

    return result
};


console.log(combinationSum([2, 3, 6, 7], 7))

❤ With Algorithm