[BackTracking]39. Combination Sum

  • 分类:BackTracking/DFS
  • 时间复杂度: O(n^2)

39. Combination Sum

Given a set of candidate numbers (candidates) (without duplicates) and a target number (target), find all unique combinations in candidates where the candidate numbers sums to target.

The same repeated number may be chosen from candidates unlimited number of times.

Note:

  • All numbers (including target) will be positive integers.
  • The solution set must not contain duplicate combinations.

Example 1:

Input: candidates = [2,3,6,7], target = 7,
A solution set is:
[
  [7],
  [2,2,3]
]

Example 2:

Input: candidates = [2,3,5], target = 8,
A solution set is:
[
  [2,2,2,2],
  [2,3,3],
  [3,5]
]

代码:

方法:

class Solution:
    def combinationSum(self, candidates, target):
        """
        :type candidates: List[int]
        :type target: int
        :rtype: List[List[int]]
        """
        res=[]
        if (candidates==None) or (len(candidates)==0):
            return res
        my_combination=[]
        
        def helper(res,list_,candidates,target,start):
            if target<0:
                return
            if target==0:
                print(list_)
                res.append(list_.copy())
                return 
            for i in range(start,len(candidates)):
                list_.append(candidates[i])
                helper(res,list_,candidates,target-candidates[i],i)
                list_.pop()
            
        helper(res,my_combination,candidates,target,0)
        return res

讨论:

1.先用的是BackTracking的方法,然后好累不想搞了。。。

你可能感兴趣的:([BackTracking]39. Combination Sum)