题目
代码
码源
class Solution {
public List<List<Integer>> combinationSum(int[] candidates, int target) {
int len = candidates.length;
List<List<Integer>> la = new ArrayList<>();
if (len == 0)
return la;
Deque<Integer> path = new ArrayDeque<>();
Arrays.sort(candidates);
dfs(candidates, 0, len, target, path, la);
return la;
}
private void dfs(int[] candidates,int begin,int len,int target,Deque<Integer> path,List<List<Integer>> la) {
if (target == 0) {
la.add(new ArrayList<>(path));
return;
}
for (int i = begin; i < len; i++) {
if (target - candidates[i] < 0)
break;
path.addLast(candidates[i]);
dfs(candidates, i, len, target - candidates[i], path, la);
path.removeLast();
}
}
}