目录
- 1. 题目:
- 2. 我的代码:
- 小结:
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]]
2. 我的代码:
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
# 记录结果
result = []
# 记录中间值
path = []
# 回溯主体
def backtracking(i_start):
# 终止条件
if len(path) == k:
result.append(path[:])
return
# 递归 + 回溯
for i in range(i_start, n + 1):
path.append(i)
backtracking(i + 1)
path.pop()
# 最坏情况是这条分支没有达到条件的路径
return
backtracking(1)
return result
回溯算法有个大体框架,即:
path一维数组,记录各个路径,作为全局变量为了防止方程反复传参,所以在加给result时要记得传给他的是副本,不是本引用,因此是result.append(path[:])
result二维数组,记录各个情况。
backtracking(start_index)函数:
- 终止条件
- for里:前进 + 递归 + 回溯
小结:
关注我给大家分享更多有趣的知识,以下是个人公众号,提供 ||代码兼职|| ||代码问题求解||
添加我的公众号即可: