力扣挑战赛第5天-No.77组合

题目描述

给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。

示例:

输入: n = 4, k = 2
输出:
[
  [2,4],
  [3,4],
  [2,3],
  [1,2],
  [1,3],
  [1,4],
]

解法

回溯法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
* @param {number} n
* @param {number} k
* @return {number[][]}
*/
let combine = function (n, k) {
let resSet = [];
let eachRes = [];
let backtracking = function (startIndex) {
if (eachRes.length === k) {
resSet.push(eachRes.slice());
return;
}
for (let i = startIndex; i <= n - (k - eachRes.length) + 1; i++) { // 横向遍历并剪枝
eachRes.push(i);
backtracking(i + 1); // 递归,纵向遍历
eachRes.pop(); // 回溯,撤销之前的节点
}
}
backtracking(1);
return resSet;
};
Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2020-2021 Sanmu
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信