77. 组合

  1. class Solution {
  2. public List<List<Integer>> combine(int n, int k) {
  3. List<List<Integer>> ans = new ArrayList<>();
  4. ArrayList<Integer> path = new ArrayList<>();
  5. if (k < 0 || n < k)
  6. return ans;
  7. dfs(n, k, 1, path, ans);
  8. return ans;
  9. }
  10. private void dfs(int n, int k, int start, ArrayList<Integer> path, List<List<Integer>> ans) {
  11. if (path.size() == k) {
  12. ans.add(new ArrayList<>(path));
  13. return;
  14. }
  15. for (int i = start; i <= n; i++) {
  16. path.add(i);
  17. dfs(n, k, i + 1, path, ans);
  18. path.remove(path.size() - 1);
  19. }
  20. }
  21. }