件名の説明:
「問題の和の組み合わせは」非反復配列要素の候補と目標数の目標を考えると、そのターゲット番号との組み合わせのためのすべての候補者を見つけることができます。
候補者の無制限番号が繰り返され、選択することができます。
出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/combination-sum
Javaコードの実装
パブリック静的リスト<リスト<整数>> combinationSum(INT []の候補、INT ターゲット){
リスト <リスト<整数>>結果は= 新規のArrayList <> (); Arrays.sort(候補); // 升序排序、便于剪枝 combine2(その結果、新しいのArrayList <>()、候補者、ターゲット、0 ); 戻り値の結果; }
パブリック 静的 ボイド combine2(一覧<一覧<整数>>結果、一覧<整数> TEMP、値int []の候補、int型のターゲットは、INT 開始){ 場合(目標== 0 ){ 結果。ArrayList <> (TEMP))。 返します。 } のために(int型のI =始める; iは<candidates.length &&ターゲット候補を[I]> = 0; iは++ ){ temp.add(候補[I])。 combine2(その結果、TEMP、候補ターゲット - 候補[i]は、I)。 temp.remove(temp.size() -1 )。 } }