1.我尝试了如下代码,但是遇到while(i<nums.length-1&&nums[i]==nums[++i]);就开始超时。目前还没分析出原因。
2.public class Solution {
List<List<Integer>> res;
public List<List<Integer>> combinationSum2(int[] candidates, int target) {
res = new LinkedList<List<Integer>>();
List<Integer> tmp = new LinkedList<Integer>();
Arrays.sort(candidates);
helper(candidates,target,0,tmp);
return res;
}
private void helper(int[]nums,int target,int index,List<Integer> tmp){
if(target<0){
return;
}else if(target == 0){
List<Integer> oneComb = new LinkedList<Integer>(tmp);
res.add(oneComb);
}else{
for(int i = index; i < nums.length; i++){
tmp.add(nums[i]);
helper(nums, target - nums[i], i+1, tmp);
tmp.remove(tmp.size() - 1);
while(i < nums.length&&nums[i] == nums[++i]);
}
}
}
}