leetcode第77题组合

原题出于leetcode第77题https://leetcode.cn/problems/combinations/

1.树型结构

2.回溯三部曲

  1. 递归函数的参数和返回值

  2. 确定终止条件

  3. 单层递归逻辑

3.代码

二维数组result
一维数组path
void backtracking(n,k,startindex){
    if(path.size==k){
        result.append(path);
        return ;
    }
    for(i=startindex;i<=n;i++){
        path.push(i);
        backtracking(n,k,i+1);
        path.pop();    
    }
    return ;
}

4.剪枝算法(长度为k时的剪枝)

由于要求组合的长度为k,故若遍历到某个数时,其后面刚好有k-1个数,则这个数即为应当遍历的最后一个数。如下图树型结构所示:

可以在遍历时对i的范围进行调整,调整逻辑如下:

  • 首先,我们要知道当前选取了多少个元素,即path.size()

  • 其次,计算还需要选取多少个元素:k-path.size();

  • 假设此时取到的数为x,则还未取的数的范围是[x,n],故有:

n-x+1>=k-path.size()

解得:x<=n-(k-path.size)+1

所以i的取值到n-(k-path.size)+1即可,具体代码如下:

二维数组result
一维数组path
void backtracking(n,k,startindex){
    if(path.size==k){
        result.append(path);
        return ;
    }
    for(i=startindex;i<=n-(k-path.size)+1;i++){
        path.push(i);
        backtracking(n,k,i+1);
        path.pop();    
    }
    return ;
}

文章中有关树型结构的图片出自代码随想录,这是一个非常好的算法平台,强烈推荐学算法的同学看一看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/980252.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于html的俄罗斯方块小游戏(附程序)

一、前言 俄罗斯方块&#xff08;Tetris&#xff09;是一款经典的益智游戏&#xff0c;由苏联程序员阿列克谢帕基特诺夫&#xff08;Alexey Pajitnov&#xff09;于1984年开发。这款游戏最初是为减少计算机的恐怖效果而设计的&#xff0c;后来通过盗版传播到全球&#xff0c;成…

openwebUI访问vllm加载deepseek微调过的本地大模型

文章目录 前言一、openwebui安装二、配置openwebui环境三、安装vllm四、启动vllm五、启动openwebui 前言 首先安装vllm&#xff0c;然后加载本地模型&#xff0c;会起一个端口好。 在安装openwebui,去访问这个端口号。下面具体步骤的演示。 一、openwebui安装 rootautodl-co…

机器学习:线性回归,梯度下降,多元线性回归

线性回归模型 (Linear Regression Model) 梯度下降算法 (Gradient Descent Algorithm) 的数学公式 多元线性回归&#xff08;Multiple Linear Regression&#xff09;

加入二极管的NE555 PWM 电路

只用电阻、电容构成的一般定时电路的占空比无法低于50%&#xff0c;如下图&#xff1a; 电容的充电路径上串联了R1 和R2&#xff0c;而放电路径上只有R2&#xff0c;所以放电的时间不可能比充电长。加入二极管就能解决这个问题&#xff0c;用二极管把充电和放电路径分离开&…

游戏引擎学习第131天

仓库:https://gitee.com/mrxiao_com/2d_game_3 运行游戏并识别我们的小问题 今天的工作重点是对游戏引擎进行架构优化&#xff0c;特别是针对渲染和多线程的部分。目前&#xff0c;我们的目标是让地面块在独立线程上进行渲染&#xff0c;以提高性能。在此过程中&#xff0c;我…

并发编程1

JAVA线程回顾 多线程 多个并行的线程来完成个自的任务&#xff0c;优点是程序响应速度更快&#xff0c;程序性能得到提升。 并行执行与并发执行 并发执行就是在单核CPU下&#xff0c;现成实际上是串行执行的&#xff0c;任务调度器将cpu的时间片分给不同的线程使用&#xff0…

AI: Cursor是否已奠定AI开发环境的龙头地位?

近年来&#xff0c;人工智能&#xff08;AI&#xff09;在软件开发领域的应用迅速升温&#xff0c;而Cursor作为一款AI驱动的代码编辑器&#xff0c;凭借其创新功能和市场表现&#xff0c;引发了广泛讨论。许多人认为&#xff0c;Cursor已经奠定了AI开发环境的龙头地位。然而&a…

贪心算法+题目

贪心算法 跳跃游戏跳跃游戏2 跳跃游戏 题目 拿到题目就暴力穷举&#xff0c;我用的是dfs&#xff0c;加上备忘录之后还是超出时间限制。就考虑一下贪心算法。你想 我在[0,n-2]位置遍历求出可以跳跃的最远距离&#xff0c;用farthest更新最大值&#xff0c;如果>终点就返回t…

02 2个交换机+vlan构造两个逻辑上的子网

前言 这是最近一个朋友的 ensp 相关的问题, 这里来大致了解一下 ensp, 计算机网络拓扑 相关基础知识 这里一系列文章, 主要是参照了这位博主的 ensp 专栏 这里 我只是做了一个记录, 自己实际操作了一遍, 增强了一些 自己的理解 当然 这里仅仅是一个 简单的示例, 实际场景…

【前端基础】Day 7 CSS高级技巧

目录 1. 精灵图 1.1 为什么需要精灵图 1.2 精灵图&#xff08;sprites&#xff09;的使用 2. 字体图标 2.1 字体图标的产生 2.2 字体图标的优点 2.3 字体图标的下载 2.4 字体图标的引入 2.5 字体图标的追加 3. CSS三角形 4. CSS用户界面样式 4.1 更改用户鼠标样式 …

React低代码项目:问卷编辑器 II

吐司问卷&#xff1a;问卷编辑器 II Date: February 26, 2025 Log **软件设计的可拓展性&#xff1a;**对修改封闭&#xff0c;对拓展开放 工具栏 删除组件 需求&#xff1a; 要点&#xff1a; 实现删除选中组件 思路&#xff1a;重新计算 selectedId&#xff0c;优先选择…

图像处理之图像边缘检测算法

目录 1 图像边缘检测算法简介 2 Sobel边缘检测 3 经典的Canny边缘检测算法 4 演示Demo 4.1 开发环境 4.2 功能介绍 4.3 下载地址 参考 1 图像边缘检测算法简介 图像边缘检测是计算机视觉和图像处理中的基本问题&#xff0c;主要目的是提取图像中明暗变化明显的边缘细节…

数据结构(初阶)(八)----排序

排序 概念 排序&#xff1a;所谓排序&#xff0c;就是使⼀串记录&#xff0c;按照其中的某个或某些关键字的⼤⼩&#xff0c;递增或递减的排列起来的 操作。 比较排序 插入排序 直接插入排序 直接插⼊排序是⼀种简单的插⼊排序法&#xff0c;其基本思想是&#xff1a;把待…

计算机毕业设计SpringBoot+Vue.js基于JAVA语言的在线考试与学习交流网页平台(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

聊一聊 IM 如何优化数据库

IM 系列 im doc 实时通讯文档仓库 聊一聊 IM 是什么&#xff1f; IM 即时通讯系统概览 聊一聊 IM 要如何设计&#xff1f; 聊一聊 IM 要如何设计功能模块&#xff1f; 聊一聊 IM 要如何进行架构设计&#xff1f; 聊一聊 IM 要如何进行技术选型&#xff1f; 聊一聊 IM 要…

人工智能AI在汽车设计领域的应用探索

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 简单&#xff0c;单纯&#xff0c;喜欢独处&#xff0c;独来独往&#xff0c;不易合同频过着接地气的生活…

DeepSeek-R1 大模型实战:腾讯云 HAI 平台 3 分钟极速部署指南

引言&#xff1a;为什么选择 DeepSeek-R1&#xff1f; 近期&#xff0c;国产大模型 DeepSeek-R1 因其低成本、高性能的特点在全球 AI 领域引发热议。根据 Sensor Tower 数据&#xff0c;其发布仅 18 天便斩获 1600 万次下载量&#xff0c;远超 ChatGPT 同期表现。而腾讯云推出…

[SWPUCTF 2022 新生赛]1z_unserialize

题目描述&#xff1a;是很简单的反序列化噢 代码审计看注释 <?phpclass lyh{ //定义一个类为lyhpublic $url NSSCTF.com;//公共属性&#xff0c;初始值为NSSCTF.compublic $lt; //公共属性&#xff0c;没有初始值public $lly; //公共属性&…

三支一扶入职体检不合格项目全解析

“三支一扶” 计划为高校毕业生提供了到基层服务的宝贵机会&#xff0c;通过层层选拔后&#xff0c;入职体检也是其中关键的一环。了解哪些项目可能导致体检不合格&#xff0c;能让大家提前做好准备&#xff0c;避免在这一步出现意外。接下来&#xff0c;就为大家详细介绍三支一…

专题一四数之和

1.题目 题目分析&#xff1a; 给一个数组&#xff0c;在里面找到四个数字&#xff0c;满足四个数字之和等于给的特定值&#xff0c;四数之和可以拆分成三数之和&#xff0c;再继续拆分成二数之和&#xff0c;由简化繁。 2.算法原理 通过排序加双指针 1.依次固定一个数 2.在…