leetcode 39. 組合せ合計(python)

1486 ワード

【前言】
pythonブラシleetcode問題解決ディレクトリインデックス:https://blog.csdn.net/weixin_40449300/article/details/89470836
githubリンク:https://github.com/Teingi/test 
【本文】
重複要素のない配列candidatesとターゲット数targetが与えられ、candidatesのすべての数値とtargetの組合せを見つける.candidatesの数字は、無制限に繰り返し選択することができる.
説明:
  • すべての数字(targetを含む)は正の整数です.
  • の解セットには、重複する組合せは含まれません. 

  • 例1:
      : candidates = [2,3,6,7], target = 7,
         :
    [
      [7],
      [2,2,3]
    ]
    

    例2:
      : candidates = [2,3,5], target = 8,
         :
    [
      [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]]
            """
            candidates.sort()
            #    
            Solution.anslist = []
            self.DFS(candidates, target, 0, [])
            return Solution.anslist
     
        def DFS(self, candidates, target, start, valuelist):
            if target ==  0:
                return Solution.anslist.append(valuelist)
            for i in range(start, len(candidates)):
                if candidates[i] > target:
                    return
                self.DFS(candidates, target-candidates[i], i, valuelist+[candidates[i]])