题目链接如下:
LeetCode 40—Combination Sum II
AC代码如下:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Problem40 {
public static void main(String[] args) {
int[] ss={2,3,6,7};
combinationSum2(ss,7);
}
public static List<List<Integer>> combinationSum2(int[] candidates, int target) {
List<List<Integer>> list=new ArrayList<List<Integer>>();
Arrays.sort(candidates);
createsult(candidates,target,new ArrayList<Integer>(),0,list);
return list;
}
public static void createsult(int[] candidates,int target,List<Integer> arr,int tag
,List<List<Integer>> list){
for(int i=tag;i<=candidates.length-1;i++){
if(i!=tag && candidates[i]==candidates[i-1]) continue;
if(candidates[i]==target){
ArrayList<Integer> arr2 =new ArrayList<Integer>();
arr2.addAll(arr);
arr2.add(candidates[i]);
list.add(arr2);
break;
}
else if(candidates[i]>target) break;
else{
ArrayList<Integer> arr2 =new ArrayList<Integer>();
arr2.addAll(arr);
arr2.add(candidates[i]);
createsult(candidates,target-candidates[i],arr2,i+1,list);
}
}
}
}