这是我用 Python 为 Leetcode 216 编写的函数。问题陈述是:
从 [1-9] 中找到 k 个不同数字的所有组合,它们的总和为 n。返回所有有效组合的列表,已知 2 <= k <= 9, 1 <= n <= 60
这是我的算法:
def combinationSum(k: int, n: int) -> list[list[int]]:
def backtrack(res, start, cur, curSum):
print(res, start, cur, curSum)
if len(cur) == k:
if curSum == n:
res.append(cur[:])
return
for i in range(start, 10):
cur.append(i)
backtrack(res, i + 1, cur, curSum + i)
cur.pop()
c = []
backtrack(c, 1, [], 0)
return c
这是正确的。不过,我在时间复杂度方面遇到了麻烦。我知道它是指数的,但是我怎样才能推导出它呢?