news 2026/7/21 2:05:23

回溯算法--总结1

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
回溯算法--总结1

第一周总结

  1. 回溯问题抽象为树形结构,可以直观的看出其搜索的过程:for循环横向遍历,递归纵向遍历,回溯不断调整结果集。
  2. 回溯算法三部曲:
    1. 参数。
    2. 终止条件。
    3. 单层递归逻辑。
  3. 剪枝:
    1. 剪枝1:for循环在寻找起点的时候要有一个范围,如果这个起点到集合终止之间的元素已经不够 题目要求的k个元素了,就没有必要搜索了。
    2. 剪枝2:在求和问题中,排序之后加剪枝是常见的套路!
    3. 比如组合中要求有四个元素,从1-9中选择,当遍历到6时就没必要继续递归了。因为往后不够四个元素。
  4. startIndex:
    1. 一般只有一个集合求组合问题时候,使用startIndex,并且能保证组合中的元素不重复。
    2. 有多个集合从中求组合问题时,不需要使用startIndx,比如电话号码的字母组合。
    3. 注意以上说的是求组合的情况,如果是排列问题,又是另一套分析的套路,后面我在讲解排列的时候会重点介绍

第二周总结

  1. “树枝去重”和“树层去重”
    1. 在candidates[i] == candidates[i - 1]相同的情况下:
      • used[i - 1] == true,说明同一树枝candidates[i - 1]使用过
      • used[i - 1] == false,说明同一树层candidates[i - 1]使用过
  2. 切割问题(分割回文串)
    1. 切割问题其实类似组合问题
    2. 如何模拟那些切割线:startIndex模拟切割线
    3. 切割问题中递归如何终止
    4. 在递归循环中如何截取子串
  3. 子集问题
    1. 在树形结构中子集问题是要收集所有节点的结果,而组合问题是收集叶子节点的结果
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/20 10:19:25

零基础学网安不慌!电脑小白 4 阶段入门路线,分阶段学习不踩坑

别再说 “零基础学不了网安”!电脑小白也能入门的 4 阶段路线. 总有人问:“我连代码都不会写,能学网络安全吗?” 其实真不用怕,哪怕你是只会用电脑刷视频的纯小白,跟着清晰的路线一步步学,照样…

作者头像 李华
网站建设 2026/7/19 5:17:15

传统锁 vs Redisson分布式锁:效率对比实测

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 生成一个性能对比测试项目,比较三种锁实现:1. 基于数据库的悲观锁 2. 原生Redis的SETNX实现的简单锁 3. Redisson分布式锁。要求:1. 使用JMH进行…

作者头像 李华
网站建设 2026/7/21 6:24:26

封神!从开发转安全渗透工程师,这是我做的最对的职业选择

开发是我不想重复的路 早几年都流行学计算机,传言就业薪资高,就选了软件开发专业。 在学校也不算混子吧,该学的java、python、前端操作系统都学了,不过大学的基础大家都懂,大学期间贪玩,老师在上面讲课&a…

作者头像 李华
网站建设 2026/7/21 2:02:33

3、循环与分支:编程中的核心逻辑控制

循环与分支:编程中的核心逻辑控制 在编程世界里,迭代和条件执行是任何编程语言的核心要素。迭代意味着重复执行一段代码,直至某个条件发生变化;条件执行则是依据特定条件,在两个或更多的操作中做出选择(其中一个操作可能是什么都不做)。 1. 命令的退出状态 在Shell中…

作者头像 李华
网站建设 2026/7/19 1:29:59

小白必看:5分钟学会检查你的个人信息是否泄露

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个极简的个人数据泄漏检查网页应用,功能:1. 单输入框查询界面 2. 对接HaveIBeenPwned API 3. 显示简明结果(安全/已泄露)4. 基…

作者头像 李华
网站建设 2026/7/21 1:46:56

效率对比:传统开发vs使用MyBatisPlus代码生成器

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 请比较两种开发方式的效率:1. 手动编写SpringBootMyBatis的DAO层代码(包括实体类、Mapper接口、XML映射文件);2. 使用MyBatisPlus的代…

作者头像 李华