给定两个整数n和k,返回1~n中k个数的所有可能组合。
回溯法,深度优先搜索,faster than 91%
/**
* @param {number} n
* @param {number} k
* @return {number[][]}
*/
var combine = function(n, k) {
var res = []
if(n === 0 || k === 0) return res
dfs(n, k, 1, [], res)
return res
};
var dfs = function(n, k, flag, sub, res){
if(sub.length === k){
res.push(sub.slice())
}else{
for(var i = flag; i <= n; i++){
sub.push(i)
dfs(n, k, i + 1, sub, res)
sub.pop()
}
}
}