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- ......