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);

        }
    }
}
posted @   依嘫  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示