题目:
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。
你可以按 任何顺序 返回答案。
解法:
回溯法
var ans [][]int
func combine(n int, k int) [][]int {
ans = make([][]int, 0)
nums := make([]int, k)
backtracking(nums, 0, 1, n, k)
return ans
}
func backtracking( nums []int, count, pos, n, k int) {
if count == k {
arr := make([]int, k)
for i, num := range nums {
arr[i] = num
}
ans = append(ans, arr)
return
}
for i := pos; i <= n; i ++ {
nums[count] = i
// 注意这里是i + 1
backtracking(nums, count + 1, i + 1, n, k)
}
}