216.组合总和III
文章讲解:代码随想录
class Solution {
List<List<Integer>> lists = new ArrayList<>();
public List<List<Integer>> combinationSum3(int k, int n) {
List<Integer> list = new ArrayList<>();
backtracking(list,k,n,0,1);
return lists;
}
public void backtracking(List<Integer> list, int k, int n,int sum,int start){
if(list.size() == k){
if(sum == n){
lists.add(new ArrayList<>(list));
}
return ;
}
for(int i = start;i<=9;i++){
list.add(i);
sum+=i;
backtracking(list,k,n,sum,i+1);
sum -= i;
list.remove(list.size()-1);
}
}
}
17.电话号码的字母组合
文章讲解:代码随想录
class Solution {
List<String> lists = new ArrayList<>();
public List<String> letterCombinations(String digits) {
if("".equals(digits)){
return lists;
}
String[] temp = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
char[] chars = digits.toCharArray();
String[] str = new String[chars.length];
for(int i = 0;i<chars.length;i++){
str[i] = temp[Integer.parseInt(String.valueOf(chars[i]))];
}
StringBuilder sb = new StringBuilder();
backTracking(str,sb,0);
return lists;
}
public void backTracking(String[] str,StringBuilder sb,int index){
if(sb.length() == str.length){
lists.add(sb.toString());
return ;
}
for(int i = 0;i<str[index].length();i++){
sb.append(str[index].charAt(i));
backTracking(str,sb,index+1);
sb.deleteCharAt(sb.length()-1);
}
}
}