1. 程式人生 > >【LeetCode】Combination

【LeetCode】Combination

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],

]

思路:

遞迴。

  1. 用一臨時陣列solution儲存元素, 其大小應為k
  2. base case:solution長度為k
  3. 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();  
		}  
	}   
};