Pythonの39コンビネーション合計でLeetCode

https://leetcode.com/problems/combination-sum/

候補数の組(与えられたcandidates(重複なし))とターゲット番号(target)内のすべてのユニークな組み合わせを見つける  candidates の候補数の合計  target

同じ繰り返し数は、から選択することができる  candidates 回数無制限の数。

注意:

  • (を含むすべての数値  target)は、正の整数になります。
  • ソリューションセットは、重複の組み合わせを含めることはできません。

例1:

入力:候補= [2,3,6,7], ターゲット= 7
解集合である:
[ 
  [7]、
  [2,2,3-] 
]

例2:

入力:候補= [2,3,5] , ターゲット= 8、
解集合である:
[ 
  [2,2,2,2]、
  [2,3,3]、
  [3,5] 
]
 溶液:
クラスのソリューション(オブジェクト):
     デフcombinationSum(自己、候補者、ターゲット):
         "" " タイプ候補:リスト[INT] タイプ対象:INT 
        :RTYPE:リスト[一覧[INT]] 
        """ 
        のres = [] 
        の候補者.sort()
        
        デフDFS(開始、アウト、ターゲット):       
             もし ないターゲット:
                res.append(アウト)
                復帰

            のための I における範囲((候補)lenは、開始):
                 もし:候補[I]>ターゲット破る
                DFS(I 、アウト + [候補[I]]、標的-候補[i])と

        DFS(0、[]、ターゲット)
        の戻り RES

DFSクラシックのタイトルは、この問題を考えて、DFSはその後、大きな順に小さく始め、小さな検索を開始することです。そのような候補= [1,2,3]は、目標= 5は、経路は、であるDFS:1 - > 1 - > 1 - > 1 - > 1、1-> 1-> 1-> 2、1-> > 31- ......

おすすめ

転載: www.cnblogs.com/lowkeysingsing/p/11209632.html