leetcode 39.组数总和 (python)回溯法
题目: 题解: 从题目可以看出是找所有组合的问题,因此就想起用递归,回溯的方法来求解。 我们首先对数组进行排序,这样方便查找。 代码思路: 进行回溯的过程中,我们通过更新target来寻找合适的组合。 即我们每次选取一个元素,就从target中减去这个元素,然后利用减去后的差来更新target。 在进行回溯的过程中,我们需要确定回溯的数组范围,因此我们引入索引index,因为可以重复选择,所以index值等于当前的索引i。 图解思路: 代码: class Solution : def combinationSum ( self , candidates , target ) : index = 0 result = [ ] temp = [ ] de = target candidates . sort ( ) def dfs ( target , index , temp ) : # print('de: %d' % de) # print('sum: %d' % sum(temp)) if sum ( temp ) == de : result . append ( temp ) # print(result) # temp = [] for i in range ( index , len ( candidates ) ) : # print('i: %d' % i) if