Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.
For example,
If n = 4 and k = 2, a solution is:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
思路:
递归。
- 用一临时数组solution存储元素, 其大小应为k
- base case:solution长度为k
- else 继续向solution push元素,递归,然后弹出最后元素
class Solution { public: vector<vector<int>> combine(int n, int k) { vector<int> solution; vector<vector<int>> result; getCombine(n,k,1,solution,result); return result; } void getCombine( int n, int k, int level, vector<int> &solution, vector<vector<int>> &result) { if(solution.size() == k) { result.push_back(solution); return; } for(int i = level; i<=n; i++) { solution.push_back(i); getCombine(n,k,i+1,solution,result); solution.pop_back(); } } };
【LeetCode】Combination
最新推荐文章于 2020-02-24 23:21:13 发布