【LeetCode】Combination
阿新 • • 發佈:2019-02-06
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(); } } };