题目
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。
思路
var combine = function(n, k) {
let res =[];
let path =[];
const backTracing =function(n,k,startIndex){
if(path.length ===k){
// 用slice效率更高?
// res.push(path.slice());
// 如果不进行拷贝,则push的是一个array引用,但path最后会是空(被全部pop)
res.push([...path]);
return;
}
// i的范围运用了剪枝思想
for(let i =startIndex;i<=n-(k-path.length)+1;i++){
path.push(i);
backTracing(n,k,i+1);
path.pop();
}
}
backTracing(n,k,1);
// console.log(res);
return res;
};