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

代码运行流程

相关推荐
利刃大大1 分钟前
【SpringBoot】配置文件 && 日志输出 && lombok
java·spring boot·后端
Christo33 分钟前
2022-《Deep Clustering: A Comprehensive Survey》
人工智能·算法·机器学习·数据挖掘
C+++Python7 分钟前
如何选择合适的锁机制来提高 Java 程序的性能?
java·前端·python
long31614 分钟前
类与对象 | 低级别设计 (LLD)
java·spring boot·学习·程序人生·spring·设计模式·学习方法
专注于大数据技术栈15 分钟前
java学习--String、StringBuilder、StringBuffer 的核心区别
java·学习
我命由我1234518 分钟前
Java 开发问题:包名 ‘com.my.compressimagetest‘ 与同名的类发生冲突
java·开发语言·学习·java-ee·intellij-idea·学习方法·intellij idea
⑩-24 分钟前
Sleep与Wait的区别
java·开发语言
程序员阿鹏24 分钟前
List和Set的区别
java·开发语言·数据结构·后端·list
CHANG_THE_WORLD25 分钟前
6.2.在汇编层面,数据本身没有类型
java·服务器·汇编
郑州光合科技余经理27 分钟前
技术解析:如何打造适应多国市场的海外跑腿平台
java·开发语言·javascript·mysql·spring cloud·uni-app·php