216. Combination Sum III

来源:互联网 发布:视频机器码破解软件 编辑:程序博客网 时间:2024/04/30 16:13

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

public class Solution {    public List<List<Integer>> combinationSum3(int k, int n) {        List<List<Integer>> res = new ArrayList<>();        combination(res, new ArrayList<Integer>(), k, 1, n);        return res;    }    public void combination(List<List<Integer>> res, ArrayList<Integer> cmb, int k, int start, int n) {        if (n == 0 && cmb.size() == k) {            List<Integer> tmp = new ArrayList<Integer>(cmb);            res.add(tmp);            return;        }        for (int i = start; i <= 9; i++) {            cmb.add(i);            combination(res, cmb, k, i+1, n-i);            cmb.remove(cmb.size()-1);        }    }}
0 0