leetcode77
作者:互联网
题目:
给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。
示例:
输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]
解题思路:
递归
结束条件:out.size() == k;
递归思路:从level到n每个数字作为起始,level数字放入out中,剩下的数字用来调用自身
代码:
class Solution { public: vector<vector<int>> combine(int n, int k) { vector<vector<int>> res; vector<int> out; helper(res, n, k, 1, out); return res; } void helper(vector<vector<int>> &res,int n, int k, int level, vector<int> out ){ if(out.size() == k){ res.push_back(out); return; } for(int i=level;i<=n;i++){ out.push_back(i); helper(res, n, k, i+1, out); out.pop_back(); } } };
标签:leetcode77,helper,level,int,res,vector,out 来源: https://www.cnblogs.com/yxlsblog/p/10839376.html