39. 组合总和
思路
回溯,同一个元素可以重复取,那调用的时候就传自己进去。数组递增,所以当加起来的和大于target就可以返回了。
代码
class Solution {
List<List<Integer>> result=new ArrayList<>();
List<Integer> path=new ArrayList<>();
int sum=0;
public List<List<Integer>> combinationSum(int[] candidates, int target) {
find(candidates,target,0);
return result;
}
public void find(int[] candidates, int target,int startIndex){
if(sum>target) return;
if(sum==target){
result.add(new ArrayList<>(path));
return;
}
for(int i=startIndex;i<candidates.length;i++){
path.add(candidates[i]);
sum+=candidates[i];