LeetCode in TypeScript

77. Combinations

Medium

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:

Solution

function combine(n: number, k: number): number[][] {
    const ans: number[][] = []
    const backtrack = (curr: number[], j: number) => {
        if (curr.length == k) {
            ans.push([...curr])
            return
        }
        for (let i = j; i <= n; i++) {
            curr.push(i)
            backtrack(curr, i + 1)
            curr.pop()
        }
    }
    backtrack([], 1)
    return ans
}

export { combine }