leetcode 77. 组合-java实现
题目所属分类
简单的dfs 不过这里面没用二进制数和boolean来判断这位数是否走过
而是用了start 来轮序遍历
这个clear()有的时候不加会报错
原题链接
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。
你可以按 任何顺序 返回答案。
代码案例:输入:n = 4, k = 2
输出:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
题解
class Solution {
List<List<Integer>> res = new ArrayList<>();
List<Integer> a = new ArrayList<>();
public List<List<Integer>> combine(int n, int k) {
// ans.clear(); 这个最好加上
dfs(n,0,1,k);
return res ;
}
public void dfs(int n , int u , int start ,int k){
if(u == k){
res.add(new ArrayList<>(a));
return ;
}
for(int i = start ; i <= n ; i++){
a.add(i);
dfs(n,u+1,i+1,k);
a.remove(a.size()-1);
}
}
}

浙公网安备 33010602011771号