力扣 中等 77.组合

文章目录

题目介绍

解法

代码如下

java 复制代码
class Solution {
	//定义成员变量
    List<List<Integer>> result= new ArrayList<>();
    List<Integer> path = new ArrayList<>();
    public List<List<Integer>> combine(int n, int k) {
        dfs(n,k,1);
        return result;
    }
    //startIndex 参数用于控制递归的起点。
    //遍历从 startIndex 到 n 的每个数字,确保组合中没有重复的元素。
    public void dfs(int n,int k,int startIndex){
        if (path.size() == k){
            //创建一个新的列表并将path 列表的内容复制到新创建的列表中
            //目的是为了避免后续对 path 列表的修改影响到 result 列表中已有的元素
            result.add(new ArrayList<>(path));
            return;
        }
        for (int i =startIndex;i<=n;i++){
            path.add(i);
            dfs(n,k,i+1);
            path.remove(path.size() - 1);
        }
    }
}

代码运行流程

相关推荐
2501_9167665418 小时前
【Java】HashMap集合实现类
java·开发语言
不会聊天真君64718 小时前
设计模式、线程状态、上下文切换、线程安全(JAVA并发第二期)
java
Swift社区18 小时前
死锁:线程卡死不是偶然,而是设计问题
java·spring·maven
不一样的故事12618 小时前
高速采集箱
算法·信号处理
uup18 小时前
防止短信验证码接口被盗刷问题
java
xxxmine18 小时前
ConcurrentHashMap 和 Hashtable 的区别详解
java·开发语言
凛_Lin~~18 小时前
安卓 面试八股文整理(原理与性能篇)
android·java·面试·安卓
weixin_4365250718 小时前
NestJS-TypeORM QueryBuilder 常用 SQL 写法
java·数据库·sql
oioihoii18 小时前
C++虚函数表与多重继承内存布局深度剖析
java·jvm·c++
会员果汁18 小时前
算法-拓扑排序-C
c语言·开发语言·算法