/* * @lc app=leetcode id=77 lang=java * * [77] Combinations */ // @lc code=start class Solution { public List> combine(int n, int k) { List> r = new ArrayList>(); List rt = new ArrayList(); dfsIterate(r,rt, 1, n, k); return r; } private void dfsIterate(List> r, List list, int c, int n, int k) { if(list.size() == k) { r.add(shallowCopy(list)); return; } if(c > n) { return; } for(int i = c; i<=n; i++) { List p = shallowCopy(list); p.add(i); dfsIterate(r, p, i+1, n, k); } } private List shallowCopy(List list) { return new ArrayList<>(list); } } // @lc code=end