「每日LeetCode」2021年12月16日

本文最后更新于:2023年3月19日 晚上

剑指 Offer II 080. 含有 k 个元素的组合

剑指 Offer II 080. 含有 k 个元素的组合

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

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

提示:

  • 1 <= n <= 20
  • 1 <= k <= n

注意:本题与主站 77 题相同: https://leetcode-cn.com/problems/combinations/

思路

常规回溯法求组合即可。

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* @param {number} n
* @param {number} k
* @return {number[][]}
*/
var combine = function (n, k) {
const temp = [],
res = [];
const dfs = (index) => {
if (temp.length === k) {
res.push(temp.slice());
}
for (let i = index; i <= n; i++) {
temp.push(i);
dfs(i + 1);
temp.pop(i);
}
};
dfs(1);
return res;
};