力扣:77. 组合

回溯解法思路:

1.先定义一个接收全部组合的集合,在定义一个单个组合的集合,再写一个回溯方法来进行回溯,

回溯终止条件,把单个集合中的组合加入到大集合去,同时选择下一个值进行递归组合,递归到达到组合的个数时,回溯,删除处理的点进行下一个点的组合。

java 复制代码
class Solution {
    //返回全部数字组合的接收集合
    List<List<Integer>> li1=new ArrayList<>();
    //数字组合的集合
    List<Integer> li2=new ArrayList<>();
    public List<List<Integer>> combine(int n, int k) {
      //回溯函数
       huisu(n,k,1);
       return li1;
    }
    //定义的回溯函数
    public void huisu(int n,int k,int startIndex){
        //组合的终止条件
        if(li2.size()==k){
            li1.add(new ArrayList<>(li2));
            return ;
        }
  //进行组合的for循环
        for(int i=startIndex;i<=n;i++){
          li2.add(i);
          //递归k-1次来生成组合元素。
          huisu(n,k,i+1);
          li2.removeLast();
        }
    }
}
相关推荐
落魄江湖行2 分钟前
基础篇三 一行 new String(“hello“) 到底创建了几个对象?90% 的人答错了
java·面试·八股文
AI专业测评3 分钟前
2026网文圈大地震:顶配AI写作神器实测,这几款让“代练”彻底失业
人工智能·算法·aigc·ai写作
青衫码上行4 分钟前
【从零开始学习JVM】栈中存的是指针还是对象 + 堆分为哪几部分
java·jvm·学习·面试
智者知已应修善业5 分钟前
【数字稳压控制DAC/TLC5615驱动】2023-5-27
c++·经验分享·笔记·算法·51单片机
爱写代码的倒霉蛋6 分钟前
2021年天梯赛L1-8
数据结构·算法
默 语6 分钟前
Java的“后路“:不是退场,而是换了一种活法
java·开发语言·python
阿Y加油吧8 分钟前
动态规划入门必刷:不同路径 & 最小路径和 详解
算法·动态规划
ywf12159 分钟前
Spring aop 五种通知类型
java·前端·spring
慕容卡卡10 分钟前
你所不知道的RAG那些事
java·开发语言·人工智能·spring boot·spring cloud
Lyyaoo.10 分钟前
【JAVA基础面经】List(Vector+ArrayList+LinkedList)
java·开发语言·list