力扣: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();
        }
    }
}
相关推荐
葡萄成熟时 !17 小时前
黑马学生管理系统
java·开发语言
沐浴露z17 小时前
为什么使用SpringAI时通常用Builder来创建对象?详解 【Builder模式】和【直接 new】的区别
java·python·建造者模式
阿杰真不会敲代码17 小时前
Filter与Interceptor深度解析:分清这两个“拦截器”,面试不再掉坑
java·spring boot·面试
带刺的坐椅18 小时前
Solon AI 开发学习6 - chat - 两种 http 流式输入输出
java·ai·solon
客梦18 小时前
Java 道路信息系统
java·笔记
k***19519 小时前
Tomcat的升级
java·tomcat
j***495620 小时前
Windows操作系统部署Tomcat详细讲解
java·windows·tomcat
代码游侠20 小时前
日历的各种C语言实现方法
c语言·开发语言·学习·算法
草莓熊Lotso20 小时前
unordered_map/unordered_set 使用指南:差异、性能与场景选择
java·开发语言·c++·人工智能·经验分享·python·网络协议