力扣: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();
        }
    }
}
相关推荐
wan_da_ren19 分钟前
JVM监控及诊断工具-GUI篇
java·开发语言·jvm·后端
秋说23 分钟前
【PTA数据结构 | C语言版】顺序队列的3个操作
c语言·数据结构·算法
cui_hao_nan43 分钟前
JAVA并发——什么是Java的原子性、可见性和有序性
java·开发语言
best_virtuoso44 分钟前
JAVA JVM垃圾收集
java·开发语言·jvm
lifallen1 小时前
Kafka 时间轮深度解析:如何O(1)处理定时任务
java·数据结构·分布式·后端·算法·kafka
顾林海1 小时前
Android 性能优化:启动优化全解析
android·java·面试·性能优化·zygote
liupenglove1 小时前
自动驾驶数据仓库:时间片合并算法。
大数据·数据仓库·算法·elasticsearch·自动驾驶
python_tty2 小时前
排序算法(二):插入排序
算法·排序算法
然我2 小时前
面试官:如何判断元素是否出现过?我:三种哈希方法任你选
前端·javascript·算法
risc1234562 小时前
BKD 树(Block KD-Tree)Lucene
java·数据结构·lucene