Skip to content

40. 组合总和II ​

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

TypeScript · 更新于 2026-09-27

排序后回溯,同层跳过重复元素去重

typescript
/**
 * @difficulty medium
 * @tags 回溯,组合,数组
 * @note 排序后回溯,同层跳过重复元素去重
 * @40. 组合总和 II
 * 
 */
var combinationSum2 = function (candidates: number[], target: number) {
    let stack: number[] = []
    candidates.sort((a, b) => a - b)
    let n = candidates.length
    let res: number[][] = []
    const trackBack = (stack: number[], start: number, target: number) => {
        if (target === 0) {
            res.push([...stack])
            return
        }
        for (let i = start; i < n; i++) {
            if (target - candidates[i] < 0) {
                break
            }
            // 
            if (i > start && candidates[i] === candidates[i - 1]) {
                continue
            }
            stack.push(candidates[i])
            trackBack(stack, i + 1, target - candidates[i])
            stack.pop()
        }

    }

    trackBack(stack, 0, target)
    return res
};

源码:ts/leetcode/40. 组合总和II.ts


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