add new solutions
This commit is contained in:
parent
886b5e0a8e
commit
67cad91898
47 changed files with 1549 additions and 1 deletions
37
solutions/2/q216/solution.go
Normal file
37
solutions/2/q216/solution.go
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue