216. Combination Sum III

  • Difficulty: Medium

  • Topics: Array, Backtracking

  • Similar Questions:

Problem:

Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.

Note:

  • All numbers will be positive integers.
  • The solution set must not contain duplicate combinations.

Example 1:

Input: k = 3, n = 7
Output: [[1,2,4]]

Example 2:

Input: k = 3, n = 9
Output: [[1,2,6], [1,3,5], [2,3,4]]
</div>

Solutions:

class Solution {
public:
    vector<vector<int>> combinationSum3(int k, int n) {
        vector<int> path;
        vector<vector<int>> ret;
        helper(1, n, k, path, ret);
        return ret;
    }

    void helper(int pos, int target, int k, vector<int>& path, vector<vector<int>>& ret) {
        if (target < 0) return;
        if (pos == 10) {
            if (target == 0 && k == 0) {
                ret.push_back(path);
            }
            return;
        }
        path.push_back(pos);
        helper(pos + 1, target - pos, k - 1, path, ret);
        path.pop_back();
        helper(pos + 1, target, k, path, ret);
    }
};

results matching ""

    No results matching ""