所以,并不会有Combination Sum II这种可以有duplicates的情况,因为从n个元素中选k个不可能有这种
trivial: 主函数中dfs从1开始,不是从0开始。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
class Solution { public List<List<Integer>> combine(int n, int k) { List<List<Integer>> list = new ArrayList<>(); dfs(list, new ArrayList<>(), 1, n, k); return list; }
public void dfs(List<List<Integer>> list, List<Integer> arr, int start, int n, int k) { if (k == 0) list.add(new ArrayList<>(arr)); for (int i = start; i <= n; ++i) { arr.add(i); dfs(list, arr, i+1, n, k-1); arr.remove(arr.size() - 1); } } }