查找k数的allid组合,总计n,以使之后的条件为真:
示例1:
示例2:
示例3:
笔记:
根据目的,所有符合以下条件的K数的有效组合:
返回所有可能的有效组合。此列表不能包含两个相同的组合,并且可以按任何顺序返回组合。
这个问题显然是DFS。当我们寻找一个数字组合时,我们必须首先排除某些不可能的情况,也就是说,当最小的k数大于n时,这意味着完全不可能的组合直接直接返回到空列表。当最小k数等于n时,这意味着只能直接返回一组数字和要求。执行这些操作是实用的,但是直接提前编写会提高AC的工作速度,减少运行速度时间,并通过使用DFS缩短20毫秒来缩短时间。
其余的情况移交给了DFS进行解决。k等同于树的深度,n等同于树的宽度。我们定义递归函数dfs(i,k,n,l):
时间复杂性是数字O(C(9,K)),总共可能有9个递归堆栈。每个列表所需的空间l每次是K,因此空间复杂性为O(9 + K)。
https://leetcode.com/prblems/combination-sum-iii/
您的支持是我最大的动力
原始:https://juejin.cn/post/709627964735196430