文章目录
- 题目描述
- 题解思路
- 题解代码
题目描述
题解思路
使用递归回溯算法,当选择数字num后,在去选择大于num的合法数字,计算过程中的数字和,直到选择了k次,如果数组和等于n则加入结果集
从1开始选择数字,直到搜索完所有排列后,返回结果集
题解代码
class Solution:def combinationSum3(self, k: int, n: int) -> List[List[int]]:res = []tmp = []start = 1sum = 0def dfs(deep):nonlocal startnonlocal sumif deep == 0:if sum == n:res.append([num for num in tmp])returnfor i in range(start, 10):tmp.append(i)sum += istart = i + 1dfs(deep - 1)sum -= itmp.pop()dfs(k)return res