0077.组合
方法一:回溯
时间复杂度 $O(n \times k)$,空间复杂度 $O(n \times k)$。
func combine(n int, k int) [][]int {
ans := [][]int{}
var backtrack func(values []int, started int)
backtrack = func(values []int, started int) {
if len(values) == k {
ans = append(ans, append([]int{}, values...))
return
}
for i := started; i <= n; i++ {
values = append(values, i)
backtrack(values, i+1)
values = values[:len(values)-1]
}
}
backtrack([]int{}, 1)
return ans
}