216.组合总和III
17.电话号码的字母组合
216. 组合总和III
var combinationSum3 = function(k, n) {
const res = [];
const backtrack = (arr, start, sum) => {
if (arr.length === k && sum === n) {
res.push([...arr]);
return;
}
for (let i=start; i<10; i++) {
sum += i;
arr.push(i);
if (sum > n) {
sum -= i;
arr.pop();
return;
}
backtrack(arr, i+1, sum);
arr.pop();
sum -= i;
}
}
backtrack([], 1, 0);
return res;
};
17. 电话号码的字母组合
var letterCombinations = function(digits) {
const map = {
2: 'abc',
3: 'def',
4: 'ghi',
5: 'jkl',
6: 'mno',
7: 'pqrs',
8: 'tuv',
9: 'wxyz'
};
const res = [];
const len = digits.length;
const backtrack = (str = [], index) => {
if (str.length === len) {
if (str.length > 0) {
res.push([...str].join(''));
}
return;
}
const subMap = map[digits[index]];
for (let i=0; i<subMap.length; i++) {
str.push(subMap[i]);
backtrack(str, index+1);
str.pop();
}
}
backtrack([], 0);
return res;
};