题目描述:
标签:数组 回溯算法
找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。
代码:
思路分析:思路同组合题,不过就是递归结束条件除了path.size() == k 外还要加上 sum == n
发现这样写花的时间已经是0ms了,所以就没有考虑剪枝的事情了!
class Solution {
List<Integer> path = new ArrayList<Integer>();
List<List<Integer>> result = new ArrayList<List<Integer>>();
public List<List<Integer>> combinationSum3(int k, int n) {
backTracing(k,n,1);
return result;
}
public void backTracing(int k,int n,int startIndex){
if(path.size() == k){
int sum = 0;
for(int i = 0;i < k;i++){
sum += path.get(i);
}
if(sum == n){
result.add(new ArrayList<Integer>(path));
}
return;
}
for(int i = startIndex;i <= 9;i++){
path.add(i);
backTracing(k,n,i+1);
path.remove(path.size()-1);
}
}
}