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

代码运行流程

相关推荐
Data_agent6 小时前
1688获得1688店铺所有商品API,python请求示例
java·开发语言·python
why1516 小时前
面经整理——算法
java·数据结构·算法
越来越无动于衷6 小时前
Java 实现 WebService(SOAP)联网调用:从原理到实战
java·开发语言
静水楼台x6 小时前
Java之String系列--intern方法的作用及原理
java·spring
专注于大数据技术栈6 小时前
java学习--枚举(Enum)
java·学习
愤怒的代码7 小时前
Java 面试 100 题深度解析 · 专栏总览与大纲
java·面试
银迢迢7 小时前
idea控制台中文乱码采用好几种方法一直解决不了
java·ide·intellij-idea
悦悦子a啊7 小时前
将学生管理系统改造为C/S模式 - 开发过程报告
java·开发语言·算法
步步为营DotNet7 小时前
深度解析C# 11的Required成员:编译期验证保障数据完整性
java·前端·c#
痕忆丶7 小时前
双线性插值缩放算法详解
算法