毎日のアルゴリズムの問題:19.7.22
1300 ワード
タイトル:
配列candidatesとターゲット数targetを指定し、candidatesのすべての数値とtargetの組合せを見つけます.
candidatesの各数字は、各組合せで1回しか使用できません.
例:
入力:candidates=[10,1,2,7,6,1,5],target=8
出力:[[1,7],[1,2,5],[2,6],[1,1,6]]
コード:
配列candidatesとターゲット数targetを指定し、candidatesのすべての数値とtargetの組合せを見つけます.
candidatesの各数字は、各組合せで1回しか使用できません.
例:
入力:candidates=[10,1,2,7,6,1,5],target=8
出力:[[1,7],[1,2,5],[2,6],[1,1,6]]
コード:
public class Test14 {
public List> combinationSum2(int[] candidates, int target) {
Arrays.sort(candidates);
List> result = new ArrayList<>();
int index= 0;
int sum = 0;
List resultChild = new ArrayList<>();
function(candidates,target,index,sum,result,resultChild);
return result;
}
public void function(int[] candidates,int target,int index,int sum,List> result,List resultChild){
if (sum>target) {
return;
}else if(sum==target){
if (!result.contains(resultChild)) {
result.add(resultChild);
}
}else{
for (int i = index; i temp = new ArrayList<>();
temp.addAll(resultChild);
temp.add(candidates[i]);
function(candidates,target,i+1,sum+candidates[i],result,temp);
}
}
}
}