216 Combination Sum iii
public List<List<Integer>> combinationSum3(int k, int n) { List<List<Integer>> res = new ArrayList<List<Integer>>(); List<Integer> item = new ArrayList<Integer>(); int sum[] = {0}; dfs(k, n, res, item, 1, sum); return res; } public void dfs(int k, int n, List<List<Integer>> res, List<Integer> item, int depth, int[] sum) { if (item.size() > k || sum[0] > n) return; if (item.size() == k && sum[0] == n) { res.add(new ArrayList<Integer>(item)); return; } for (int i = depth; i <=9; i++) { item.add(i); sum[0] += i; dfs(k, n, res, item, i+1, sum); item.remove(item.size() - 1); sum[0] -= i; } }