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

代码运行流程

相关推荐
java1234_小锋4 分钟前
Java中读写锁的应用场景是什么?
java·开发语言
闻哥4 分钟前
从 AJAX 到浏览器渲染:前端底层原理与性能指标全解析
java·前端·spring boot·ajax·okhttp·面试
「QT(C++)开发工程师」6 分钟前
C++ 多种单例模式
java·c++·单例模式
TracyCoder1239 分钟前
LeetCode Hot100(20/100)——19. 删除链表的倒数第 N 个结点
算法·leetcode
短剑重铸之日10 分钟前
《SpringCloud实用版》统一认证授权:Spring Authorization Server + OAuth2 + JWT 生产级方案
java·后端·spring·jwt·oauth2
hrrrrb13 分钟前
【算法设计与分析】随机化算法
人工智能·python·算法
进击的小头20 分钟前
一阶IIR低通滤波器:从原理到嵌入式实战
c语言·算法
哲-哲31 分钟前
WVP+ZLM搭建碰到问题
java
编程彩机32 分钟前
互联网大厂Java面试:从Spring Cloud到分布式事务的技术场景解析
java·spring cloud·微服务·消息队列·分布式事务
2301_8112329833 分钟前
C++中的契约编程
开发语言·c++·算法