[LeetCode] Combinations

vector<vector<int>> combine(vector<int> &nums, int k) {
	vector<vector<int>> combinations;
	if (k == 0)
	{
		vector<int> combination;
		combinations.push_back(combination);
		return combinations;
	}
	if (k == nums.size())
	{
		combinations.push_back(nums);
		return combinations;
	}
	vector<int> nums_tmp = nums;
	int comboNum = nums[0];
	nums_tmp.erase(nums_tmp.begin(), nums_tmp.begin()+1);
	vector<int> combination;
	combination.push_back(comboNum);
	vector<vector<int>> combinationsWithoutComboNum = combine(nums_tmp, k-1);
	for (int j = 0; j < combinationsWithoutComboNum.size(); j++)
	{
		vector<int> combination = combinationsWithoutComboNum[j];
		combination.insert(combination.begin(), comboNum);
		combinations.push_back(combination);
	}
	combinationsWithoutComboNum = combine(nums_tmp, k);
	for (int j = 0; j < combinationsWithoutComboNum.size(); j++)
	{
		vector<int> combination = combinationsWithoutComboNum[j];
		combinations.push_back(combination);
	}
	return combinations;
}

vector<vector<int>> combine(int n, int k) {
	vector<int> nums;
	for (int i = 0; i < n; i++)
	{
		nums.push_back(i+1);
	}
	return combine(nums, k);   
}

你可能感兴趣的:(LeetCode,刷题)