给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。
示例 1:
输入: n = 4, k = 2
输出:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
/**
* @param {number} n
* @param {number} k
* @return {number[][]}
*/
var combine = function(n, k) {
var res = []
let nums = []
for(let i = 1;i<n+1;i++){
nums.push(i)
}
function dfs(arr){
if(arr.length==k){
res.push([...arr])
return
}
for(let i =0;i<nums.length;i++){
if(arr.indexOf(nums[i])>-1 || arr[arr.length-1]>nums[i]){
continue
}
arr.push(nums[i]);
dfs(arr);
arr.pop();
}
}
dfs([])
return res
};