Skip to content

Latest commit

 

History

History
29 lines (29 loc) · 783 Bytes

39组合总和.md

File metadata and controls

29 lines (29 loc) · 783 Bytes

回溯模板,res,path,index递归;由于可重复,所以每次回溯时用i而不是i+1

func combinationSum(candidates []int, target int) [][]int {
    var res [][]int
    var path []int
    var sum int
    var backtrack func(index int)
    backtrack = func(index int) {
        if sum > target {
            return
        }
        if sum == target {
            tmp := make([]int, len(path))
            copy(tmp, path)
            res = append(res, tmp)
            return
        }
        for i := index; i < len(candidates); i++ {
            path = append(path, candidates[i])
            sum += candidates[i]
            backtrack(i)
            sum -= candidates[i]
            path = path[:len(path)-1]
        }
    }
    backtrack(0)
    return res
}