我正在处理一个编程问题
给定两个整数 n 和 k,返回 1 ... n 中 k 个数字的所有可能组合。
输入 n = 5,k = 4,输出应为 [[1,2,3,4],[1,2,3,5],[1,2,4,5],[1,3 ,4,5],[2,3,4,5]],下面是我的golang方案
func combine(n int, k int) [][]int {
result := [][]int{}
comb := []int{}
subcom(0, k, n, &comb, &result)
return result
}
func subcom(s, k, n int, comb *[]int, result *[][]int) {
if k > 0 {
for i := s + 1; i <= n-k+1; i++ {
c := append(*comb, i)
subcom(i, k-1, n, &c, result)
}
} else {
*result = append(*result, *comb)
}
}
我认为我的解决方案是正确的,但它返回 [[1 2 3 5] [1 2 3 5] [1 2 4 5] [1 3 4 5] [2 3 4 5]]。
调试后发现result slice一开始添加了[1 2 3 4],后来改成了[1 2 3 5],导致重复了两个[1 2 3 5]。但我不知道这里出了什么问题。
Qyouu
相关分类