LeetCode216. 组合3Golang版
1. 问题描述
找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。
说明:
所有数字都是正整数。
解集不能包含重复的组合。
2. 思路
回溯模板
3. 代码
func combinationSum3(k int, n int) [][]int {
var path []int
var res [][]int
backtracking(n, k, 0, 1, path, &res)
return res
}
func backtracking(targetSum int, k int, sum int, startIndex int, path []int, res *[][]int) {
if len(path) == k {
if sum == targetSum {
temp := make([]int, len(path))
copy(temp, path)
*res = append(*res, temp)
}
return
}
for i := startIndex; i <= 9; i++ {
sum += i
path = append(path, i)
backtracking(targetSum, k, sum, i+1, path, res)
path = path[:len(path) - 1]
sum -= i
}
}