前言
新的一年,好好学习。
正文
问题来源
本问题来自leetcode上的77题。
问题描述
给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。
示例:
输入: n = 4, k = 2
输出:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
分析:
回溯法,秒切
func combine(n int, k int) [][]int {
tmpRes := make([]int, 0)
res := make([][]int, 0)
dfs(1, n, k, tmpRes, &res)
return res
}
func dfs(start, end, k int, tmpRes []int, res *[][]int) {
if 0 == k {
temp := append([]int{}, tmpRes...)
*res = append(*res, temp)
return
}
for i := start; i <= end - k + 1; i++{
tmpRes = append(tmpRes, i)
dfs(i+1, end, k-1, tmpRes, res)
tmpRes = tmpRes[:len(tmpRes)-1]
}
}
总结:
勤思考。
结语
不管怎么样好好加油。