Skip to content

39. 组合总和 ​

  • 题号:39
  • 来源:LeetCode
  • 难度:中等
  • 标签:回溯 组合 数组
  • 语言:TypeScript
  • 解法:1 个
  • 作者:lmliheng
  • 最近更新:2026-09-27

TypeScript · 更新于 2026-09-27

回溯枚举组合,和超过目标时剪枝

typescript
/**
 * @difficulty medium
 * @tags 回溯,组合,数组
 * @note 回溯枚举组合,和超过目标时剪枝
 * @39. 组合总和
 */
function combinationSum(candidates: number[], target: number) {
    let n = candidates.length
    let res: number[][] = []
    let path: number[] = []
    const trackback = (start: number, sum: number) => {
        if (sum === target) {
            res.push([...path])
            return
        }
        if (sum > target) {
            return
        }
        for (let i = start; i < n; i++) {
            path.push(candidates[i])
            trackback(i, candidates[i] + sum)
            path.pop()
        }
    }
    trackback(0, 0)
    return res
};

源码:ts/leetcode/39. 组合总和.ts


在 GitHub 上查看题目所在目录:lmliheng/algorithm