add new solutions

This commit is contained in:
kanna5 2026-01-05 16:48:03 +09:00
parent 886b5e0a8e
commit 67cad91898
Signed by: kkyy
GPG key ID: 06332F3965E9B0CF
47 changed files with 1549 additions and 1 deletions

View file

@ -0,0 +1,37 @@
package q216
// k numbers sum up to n
func calc(k int, buf []int, offset int, remSum int, ret [][]int) [][]int {
if offset == k-1 && remSum > 0 && remSum < 10 {
buf[offset] = remSum
cp := make([]int, len(buf))
copy(cp, buf)
return append(ret, cp)
}
remK := k - offset
minI := 1
if offset > 0 {
minI = buf[offset-1] + 1
}
maxI := 9 - remK + 1
for i := minI; i <= maxI; i++ {
minSum := (i + i + remK - 1) * remK / 2
maxSum := (19 - remK) * remK / 2
if remSum < minSum || remSum > maxSum {
continue
}
buf[offset] = i
ret = calc(k, buf, offset+1, remSum-i, ret)
}
return ret
}
func combinationSum3(k int, n int) [][]int {
return calc(k, make([]int, k), 0, n, [][]int{})
}
var _ = combinationSum3