diff --git a/leetcode/leetcode75/Backtracking/216.CombinationSumIII/combinationSumIII.go b/leetcode/leetcode75/Backtracking/216.CombinationSumIII/combinationSumIII.go new file mode 100644 index 0000000..37ab4c7 --- /dev/null +++ b/leetcode/leetcode75/Backtracking/216.CombinationSumIII/combinationSumIII.go @@ -0,0 +1,36 @@ +package main + +import ( + "fmt" +) + +func combinationSum3(k int, n int) [][]int { + result := [][]int{} + t := []int{} + var dfs func(i, s int) + dfs = func(i, s int) { + if s == 0 { + if len(t) == k { + cp := make([]int, len(t)) + copy(cp, t) + result = append(result, cp) + } + return + } + if i > 9 || i > s || len(t) >= k { + return + } + t = append(t, i) + dfs(i+1, s-i) + t = t[:len(t)-1] + dfs(i+1, s) + } + dfs(1, n) + return result +} + +func main() { + k := 3 + n := 7 + fmt.Println(combinationSum3(k, n)) +}