Files
leetcode-master/problems/0216.组合总和III.md
youngyangyang04 3ee636ec90 Update
2020-08-21 10:31:54 +08:00

1.1 KiB

第216题. 组合总和 III

找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。

说明:

所有数字都是正整数。 解集不能包含重复的组合。 

示例 1:

输入: k = 3, n = 7 输出: 1,2,4 示例 2:

输入: k = 3, n = 9 输出: 1,2,6], [1,3,5], [2,3,4

思路

C++代码

class Solution {
private:
    vector<vector<int>> result;
    void backtracking(int target, int k, vector<int>& vec, int num, int sum, int startIndex) {
        if (sum > target || num > k) {
            return;
        }
        if (num == k && sum == target) {
            result.push_back(vec);
            return;
        }

        for (int i = startIndex; i <= 9; i++) {
            sum += i;
            vec.push_back(i);
            num++;
            backtracking(target, k, vec, num, sum, i + 1);
            num--;
            sum -= i;
            vec.pop_back();
        }
    }

public:
    vector<vector<int>> combinationSum3(int k, int n) {
        vector<int> vec;
        backtracking(n, k, vec, 0, 0, 1);
        return result;

    }
};