第二十五天|216.组合总和III
216_题目关键字:回溯,重复数字
216_题目链接
代码实现
package LeetCode;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class YangSibo_216 {
}
class YangSibo_216_1{
LinkedList<Integer> path = new LinkedList<>();
List<List<Integer>> result = new ArrayList<>();
public List<List<Integer>> combinationSum3(int k, int n) {
path.clear();
result.clear();
backtracking(1,n,k);
return result;
}
public void backtracking(int startindex,int n,int k){
if(path.size() == k){
int sum = 0;
for(int num:path){
sum = sum + num;
}
if(sum == n) result.add(new ArrayList<>(path));
return;
}
for(int i = startindex;i <= 9;i++){
path.add(i);
backtracking(i+1,n,k);
path.removeLast();
}
}
}
class YangSibo_216_2{
LinkedList<Integer> path = new LinkedList<>();
List<List<Integer>> result = new ArrayList<>();
public List<List<Integer>> combinationSum3(int k, int n) {
path.clear();
result.clear();
backtracking(1,n,k);
return result;
}
public void backtracking(int startindex,int n,int k){
if(path.size() == k){
int sum = 0;
for(int num:path){
sum = sum + num;
}
if(sum == n) result.add(new ArrayList<>(path));
return;
}
for(int i = startindex;i <= 9- (k-path.size()) + 1;i++){
path.add(i);
backtracking(i+1,n,k);
path.removeLast();
}
}
}
需要注意事项
1、回溯模板中的startindex需要根据题意判断
2、先审题,明确结果集