Skip to main content

Combinations

Problem statement

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 = 2Output:[  [2,4],  [3,4],  [2,3],  [1,2],  [1,3],  [1,4],]

Example 2:

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

Constraints:

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

My solution

/**
* @param {number} n
* @param {number} k
* @return {number[][]}
*/
var combine = function(n, k) {
let temp = [];
let result = []

function traverse(startIndex) {
// console.log(JSON.stringify(temp))
if (temp.length === k) {
result.push([...temp])
}

for (let i = startIndex; i <= n; i++) {
temp.push(i);
traverse(i + 1);
temp.pop();
}
}

traverse(1)

return result;
};