216.组合总和
找出所有相加之和为n的k个数的组合,且满足下列条件:
只使用数字1到9 / 每个数字最多使用一次 / 不能包含相同的组合两次。
class Solution {
LinkedList<Integer> path = new LinkedList<>();
List<List<Integer>> result = new ArrayList<>();
public List<List<Integer>> combinationSum3(int k, int n) {
build(k, n, 1, 0);
return result;
}
public void build(int k, int n, int startIndex, int sum){
if(sum > n) return;
if(path.size() > k) return;//size后的括号别忘了
if(sum == n && path.size() == k){
result.add(new ArrayList(path));
return;
}
for(int i = startIndex; i <= 9; i++){
path.add(i);
sum += i;
build(k, n, i+1, sum);
sum -= i;
path.removeLast();
}
}
}