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

186 阅读1分钟

剑指 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],
]
var combine = function (n, k) {
  var res = [];
  if (k <= 0 || n <= 0) return res;
  var track = [];
  f(1, track);
  return res;
  function f(start, track) {
    if (k == track.length) {
      return res.push([...track]);
    }
    for (var i = start; i <= n; i++) {
      track.push(i);
      f(i + 1, track);
      track.pop();
    }
  }
};
combine(3, 2);

流程分析

image.png