leetcode-39-组合总和

题目:

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的数字可以无限制重复被选取。

思路:

利用递归的方式

代码:

class Solution:
    def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
        candidates.sort()
        n = len(candidates)
        res = []
        def backtrack(start, tmp_sum, tmp):
            if tmp_sum == target:
                res.append(tmp)
                return
            for i in range(start, n):
                # tmp_sum += candidates[i]
                if tmp_sum + candidates[i] > target:
                    break
                # tmp += [candidates[i]] 
                backtrack(i, tmp_sum + candidates[i], tmp + [candidates[i]])
        backtrack(0, 0, [])
        return res

猜你喜欢

转载自blog.csdn.net/xinxiang7/article/details/107354033