给出两个整数n和k,返回从1到n中取k个数字的所有可能的组合
例如:
如果n=4,k=2,结果为
[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]
思路:递归处理,每个数字有两种解决方案,要或者不要,指定数字开始的位置,需要的个数,递归调用获取结果
package main
/**
*
* @param n int整型
* @param k int整型
* @return int整型二维数组
*/
var out [][]int
func combine(n int, k int) [][]int {
// write code here
getCombine(1, n, k, []int{})
return out
}
func getCombine(num int, n int, k int, tmp []int) {
if k == 0 {
out = append(out, append([]int{}, tmp...))
return
}
if num > n {
return
}
tmp = append(tmp, num)
getCombine(num+1, n, k-1, tmp)
tmp = tmp[:len(tmp)-1]
getCombine(num+1, n, k, tmp)
}