77. 组合

给定两个整数 n 和 k,返回 1 ... 中所有可能的 k 个数的组合。

示例:

输入: n = 4, k = 2
输出:
[
  [2,4],
  [3,4],
  [2,3],
  [1,2],
  [1,3],
  [1,4],
]
思路:dfs,前面做过好多类似的题目了。
class Solution {
public:
    void dfs(vector<vector<int>> &re, int n, vector<int> &temp, int k){
        if(temp.size()==k){
            re.push_back(temp);
            return;
        }
        for(int i=0; i<n; ++i){
            if(!temp.empty() && i+1<=temp.back()) continue;
            temp.push_back(i+1);//递归前修改
            dfs(re, n, temp, k);
            temp.pop_back();//递归后恢复
        }
    }
        
    vector<vector<int>> combine(int n, int k) {
        vector<int>temp;
        vector<vector<int>> re;
        dfs(re, n, temp, k);
        return re;
    }
};

阅读更多

没有更多推荐了,返回首页