坚持按题型打卡&刷&梳理力扣算法题系列,语言为python3,Day2
- 组合型回溯
- 从n个数中选k个数的组合,可以看成是 长度固定的子集
- 剪枝技巧
- 设path长为m,那么还需要选 d = k-m个数
- 设当前需要从 [1,i] 这 i 个数中选数,如果 i < d,最后必然无法选出k个数,故不需要继续递归(这是一种剪枝技巧) 【倒序枚举会简单一点】
组合
-
题目描述
-
解题思路
- 边界条件
- 倒序遍历
- 注意:
- 勿漏pop()
- 剪枝
-
代码参考
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
ans = []
path = []
def dfs(i):
if i < k - len(path):
return
if len(path) == k:
ans