力扣 中等 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);
        }
    }
}

代码运行流程

相关推荐
疯狂的喵15 小时前
C++编译期多态实现
开发语言·c++·算法
scx2013100415 小时前
20260129LCA总结
算法·深度优先·图论
2301_7657031415 小时前
C++中的协程编程
开发语言·c++·算法
m0_7487080515 小时前
实时数据压缩库
开发语言·c++·算法
小魏每天都学习16 小时前
【算法——c/c++]
c语言·c++·算法
智码未来学堂16 小时前
探秘 C 语言算法之枚举:解锁解题新思路
c语言·数据结构·算法
惊讶的猫16 小时前
探究StringBuilder和StringBuffer的线程安全问题
java·开发语言
jmxwzy16 小时前
Spring全家桶
java·spring·rpc
Halo_tjn16 小时前
基于封装的专项 知识点
java·前端·python·算法
春日见17 小时前
如何避免代码冲突,拉取分支
linux·人工智能·算法·机器学习·自动驾驶