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);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)