题目
Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.
Note:
- All numbers will be positive integers.
- The solution set must not contain duplicate combinations.
解题思路
回溯,递归的时候需要当前可以放的数,还需要放的数的个数,距离目标还差几,以及临时的结果
代码
class Solution:
def combinationSum3(self, k: int, n: int) -> List[List[int]]:
def dfs(cur, k, n, tmp):
if k == 0:
if n == 0:
res.append(tmp[:])
return
for i in range(cur, 10):
if i > n:
return
tmp.append(i)
dfs(i + 1, k - 1, n - i, tmp)
tmp.pop()
res = []
dfs(1, k, n, [])
return res