首页 > 编程语言 >代码随想录算法训练营第二十四天 | 77. 组合

代码随想录算法训练营第二十四天 | 77. 组合

时间:2024-02-21 14:46:54浏览次数:33  
标签:return trace int res 随想录 77 start 第二十四 backtrace

  1. 组合

已解答
中等
相关标签

相关企业
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。

你可以按 任何顺序 返回答案。

示例 1:

输入:n = 4, k = 2
输出:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
示例 2:

输入:n = 1, k = 1
输出:[[1]]
提示:

1 <= n <= 20
1 <= k <= n
回溯的思路, 转化为树型来理解, 参数不确定可以后续补充

固定的模板

id backtraking(参数) {
if (终止条件) {
存放结果;
return;
}
for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
处理节点;
backtracking(路径,选择列表); // 递归
回溯,撤销处理结果
}

func combine(n int, k int) [][]int {
var res [][]int
var trace []int
var backtrace func(k int, start int)
backtrace = func(k, start int) {
if k == 0 {
res = append(res, append([]int{}, trace...))
return
}
if start == n {
return
}
for i := start; i < n; i++ {
trace = append(trace, i+1)
backtrace(k-1, i+1)
trace = trace[:len(trace)-1]
}
}
backtrace(k, 0)
return res
}

标签:return,trace,int,res,随想录,77,start,第二十四,backtrace
From: https://www.cnblogs.com/suxinmian/p/18025165

相关文章