回溯三部曲
- 递归函数的参数和返回值
- 递归的终止条件
- 确定单层逻辑并回溯
leetcode77.组合
思路:定义一个一维数组和一个二维数组,一维数组用来存储当前的结果,二维数组存储所有结果,如果一维数组大小等于k说明找到一个符合条件的,就返回。单层递归中,遍历元素,加入当前元素并调用递归元素,然后回溯。
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
result = []
self.backtracking(n, k, [], result, 1)
return result
def backtracking(self, n, k, path, result, start_index):
if len(path) == k:
result.append(path[:])
return
for i in range(start_index, n + 1):
path.append(i)
self.backtracking(n, k, path, result, i + 1)
path.pop()