77. 组合
力扣链接:https://leetcode.cn/problems/combinations/
这道题 我们用 n=4 k=2 来画一下
根据这里的逻辑,我们可以用递归来进行这一课树的深度遍历
通过for循环进行每一层的广度遍历
深度遍历每一层传入一个for循环遍历的起始值,第一层从1开始 然后每一次进行深度遍历的时候就传入 for循环当前遍历的值
解法
/**
* @param {number} n
* @param {number} k
* @return {number[][]}
*/
var combine = function(n, k) {
let res = []; // 这个是最终组合的结果数组
// arr表示组合的数组,start表示从哪一个值开始遍历
let dfs = function(arr,start){
//写结束条件
if(arr.lenght == k){
res.push([...arr]);
return;
}
// 每一层的遍历情况
for(let i = start ; i<= n ;i++){
arr.push(i); // 把指针指向的每一个值push进数组
dfs(arr,i+1);
arr.pop(); // 再把这个值从arr里剔除,以免影响下一次的遍历
}
}
dfs([],1);
return res;
}