[77] 组合
1 /** 2 * @param {number} n 3 * @param {number} k 4 * @return {number[][]} 5 */ 6 var combine = function (n, k) { 7 let result = []; // 存储结果 8 let subResult = []; // 存储每次排列的结果 9 let used = new Array(n + 1).fill(false); // 通过index对应的布尔值,标识各个值是否被使用,index即代表了从1~n的值 10 function dfs(current) { 11 if (subResult.length === k) { 12 result.push(subResult.slice()); 13 return; 14 } 15 for (let i = current; i < used.length; i++) { 16 if (used[i]) { 17 continue; 18 } 19 used[i] = true; 20 subResult.push(i); 21 dfs(i); 22 used[i] = false; 23 subResult.pop(); 24 } 25 } 26 dfs(1); 27 return result; 28 };