
数字选取[1-9]
不重复
这个题类似于LC77.组合,组合的问题是非重复的,这个题也是非重复的,这个题只是多了个求和。
class Solution(object):
def combinationSum3(self, k, n):
"""
:type k: int
:type n: int
:rtype: List[List[int]]
"""
# 回溯法
result = list()
self.backtracking(k, n, result, 1, [])
return result
def backtracking(self, k, n, result, start, path):
# 剪枝
if sum(path) > n:
return
# 终止条件
if len(path) == k and sum(path) == n:
result.append(path[:])
return
for i in range(start, 10):
path.append(i)
self.backtracking(k, n, result, i+1, path)
path.pop()
本文介绍了一种使用回溯法解决寻找指定和的非重复数字组合问题的算法。在类Solution中定义了combinationSum3方法,通过递归的backtracking辅助函数实现。算法首先检查当前路径的和是否超过目标值,然后判断是否达到组合的长度和数值和,最后遍历剩余可能的数字并继续回溯。这种方法展示了如何在编程中应用回溯策略来解决组合问题。
745

被折叠的 条评论
为什么被折叠?



