77. 组合
描述
给定两个整数 n
和 k
,返回范围 [1, n]
中所有可能的 k
个数的组合。
你可以按 任何顺序 返回答案。
链接
77. 组合 - 力扣(LeetCode) (leetcode-cn.com)
题解
1 class Solution { 2 List<List<Integer>> res = new ArrayList<>(); 3 Deque<Integer> path = new ArrayDeque<>(); 4 public List<List<Integer>> combine(int n, int k) { 5 if( n <= 0 || k<= 0) { 6 return res; 7 } 8 combineHelper(n, k, 1); // 递归的时候从一 开始 9 return res; 10 } 11 12 public void combineHelper(int n, int k, int StartIndex) { 13 if(path.size() == k) { // 14 res.add(new ArrayList<>(path)); 15 return; 16 } 17 18 for(int i = StartIndex; i <= n - (k-path.size()) +1; i++) { // 剪枝 19 path.addLast(i); 20 combineHelper(n, k, i + 1); 21 path.removeLast(); 22 } 23 } 24 }
参考
carl