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

Example 2:

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

Constraints:

Problem Link

Combinations - LeetCode

Code

class Solution {
public:
    vector<vector<int>> combine(int n, int k) {
        
        vector<int> temp;
        vector<vector<int>> res;
        int start = 1;
        
        solve(n,k,temp,res,start);
        
        return res;
        
    }
    
    void solve(int n,int k,vector<int> &temp,vector<vector<int>> &res,int start)
    {
        if(temp.size()==k)
        {
            res.push_back(temp);
            return;
        }
        
        if(temp.size()>k)
        {
            
            return;
        }
        
        for(int i=start;i<=n;i++)
        {
            temp.push_back(i);
            solve(n,k,temp,res,i+1);
            temp.pop_back();
        }
        
        
    }
};