Skip to main content

Combinations

Problem

Given two integers n and k, return all possible combinations of k numbers out of the range [1, n].

You may return the answer in any order.

 

Example 1:

Input: n = 4, k = 2
Output:
[
  [2,4],
  [3,4],
  [2,3],
  [1,2],
  [1,3],
  [1,4],
]

Example 2:

Input: n = 1, k = 1
Output: [[1]]

 

Constraints:

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

Solution

/**
* @param {number} n
* @param {number} k
* @return {number[][]}
*/
var combine = function(n, k) {
const res = [];
backtrack(res, [], 1, n, k);
return res;
};

var backtrack = function(res, path, start, end, size) {
if (path.length === size) {
res.push([...path]);
} else {
for (let i = start; i <= end; i++) {
path.push(i);
backtrack(res, path, i + 1, end, size);
path.pop();
}
}
};

We will implement a backtracking (DFS) solution.