首页 > 编程语言 >算法练习第二十四天|77. 组合

算法练习第二十四天|77. 组合

时间:2024-03-17 19:59:20浏览次数:22  
标签:int backtrace startIndex 77 算法 第二十四 result path size

  1. 组合
class Solution {
    List<List<Integer>> result = new ArrayList();
    List<Integer> path = new ArrayList();
    public List<List<Integer>> combine(int n, int k) {
        backtrace(n,k,1);
        return result;
    }

    public void backtrace(int n,int k,int startIndex){
        //终止条件
        if(path.size() == k){
            //存放结果
            result.add(new ArrayList<>(path));
            return;
        }
        //遍历树的一层每个节点
        //这里做剪枝操作
        //k-path.size() == 剩余需要往这个数组里面增加的的元素个数、
        //n-(k-path.size()) + 1 == 最大的起始位置,+1是包含起始位置
        //for(int i = startIndex;i<=n;i++){
        for(int i = startIndex;i<=n-(k-path.size()) + 1;i++){
            path.add(i);
            backtrace(n,k,i+1);
            //回溯,撤销处理结果
            path.removeLast();
        }

    }
}

标签:int,backtrace,startIndex,77,算法,第二十四,result,path,size
From: https://blog.csdn.net/qq_51059003/article/details/136788357

相关文章

  • 机器人路径规划:基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(提供Python代码)
    迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻......
  • C++算法学习心得八.动态规划算法(5)
    1.买卖股票的最佳时机(121题)题目描述:给定一个数组prices,它的第 i个元素 prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取......
  • C++算法学习心得八.动态规划算法(4)
    1.零钱兑换(322题)题目描述:给定不同面额的硬币coins和一个总金额amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。示例 1:输入:coins=[1,2,5],amount=11输出:3解......
  • 视野修炼-技术周刊第77期 | JSR 的愿景
    欢迎来到第77期的【视野修炼-技术周刊】,下面是本期的精选内容简介......
  • 力扣大厂热门面试算法题 39-41
    39.组合总和,40.组合总和II,41.缺失的第一个正数,每题做详细思路梳理,配套Python&Java双语代码,2024.03.17 可通过leetcode所有测试用例。目录39.组合总和解题思路完整代码PythonJava40.组合总和II解题思路完整代码PythonJava41.缺失的第一个正数解题思路完......
  • 【算法与数据结构】堆排序&&TOP-K问题之深入解析二叉树(三)
    文章目录......
  • 常见排序算法(C/C++)--- 动画演示
        本篇将介绍一些常见的排序算法,如插入排序:直接插入排序、希尔排序;选择排序:选择排序、堆排序;交换排序:快速排序、冒泡排序;以及最后的归并排序。    对于以上的排序算法,我们总结了每种排序算法的特性,接着对直接插入排序进行了优化;然后实现了归并排序和快速排......
  • 介绍分治算法
    分治算法是一种将问题划分成多个更小的子问题,并且分别解决这些子问题的策略。它通常包含三个步骤:分解(Divide):将原始问题划分成若干个更小的子问题。这个步骤可以使用递归实现,每次递归处理的子问题规模都要比原始问题小。解决(Conquer):递归地解决各个子问题,如果问题规模足够小,......
  • 【每日算法】常见AIGC模型; 刷题:力扣单调栈
    上期文章【每日算法】理论:生成模型基础;刷题:力扣单调栈文章目录上期文章一、上期问题二、理论问题1、stablediffusion模型的网络架构2、T5的网络架构(Text-To-TextTransferTransformer模型)3、SDXL模型4、DALLE5、BPE编码6、为什么DDPM加噪声的幅度是不一致的?三、力......
  • 基于减法平均算法改进的随机森林分类算法 - 附代码
    基于减法平均算法改进的随机森林分类算法-附代码文章目录基于减法平均算法改进的随机森林分类算法-附代码1.数据集2.RF模型3.基于减法平均算法优化的RF4.测试结果5.Matlab代码摘要:为了提高随机森林数据的分类预测准确率,对随机森林中的树木个数和最小叶子点数参......