当前位置: 首页 > news >正文

代码随想录算法训练营Day22

回溯知识
力扣77.组合【medium】

一、回溯知识

1、定义

  • 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。
  • 回溯是递归的副产品,只要有递归就会有回溯。

2、回溯法的效率

  • 回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案,如果想让回溯法高效一些,可以加一些剪枝的操作,但也改不了回溯法就是穷举的本质。

3、回溯法解决的问题

  • 组合问题:N个数里面按一定规则找出k个数的集合
  • 切割问题:一个字符串按一定规则有几种切割方式
  • 子集问题:一个N个数的集合里有多少符合条件的子集
  • 排列问题:N个数按一定规则全排列,有几种排列方式
  • 棋盘问题:N皇后,解数独等等

组合是不强调元素顺序的,排列是强调元素顺序。

4、如何理解回溯法

  • 回溯法解决的问题都可以抽象为树形结构
  • 因为回溯法解决的都是在集合中递归查找子集
    • 集合的大小就构成了树的宽度,递归的深度就构成了树的深度。
  • 递归就要有终止条件,所以必然是一棵高度有限的树(N叉树)。

5、回溯法模板——三部曲

  • 回溯函数模板返回值以及参数
    • 在回溯算法中,习惯函数起名字为backtracking,这个起名大家随意。
    • 回溯算法中函数返回值一般为void。
    • 再来看一下参数,因为回溯算法需要的参数可不像二叉树递归的时候那么容易一次性确定下来,所以一般是先写逻辑,然后需要什么参数,就填什么参数。
  • 回溯函数终止条件
    • 树中就可以看出,一般来说搜到叶子节点了,也就找到了满足条件的一条答案,把这个答案存放起来,并结束本层递归
  • 回溯搜索的遍历过程
    • for循环就是遍历集合区间,可以理解一个节点有多少个孩子,这个for循环就执行多少次。
    • backtracking这里自己调用自己,实现递归。
    • 从图中看出for循环可以理解是横向遍历,backtracking(递归)就是纵向遍历,这样就把这棵树全遍历完了,一般来说,搜索叶子节点就是找的其中一个结果了。在这里插入图片描述

二、力扣77.组合【medium】

题目链接:力扣77.组合
left =x300
视频链接:代码随想录

1、思路

  • 时间复杂度: O ( n ) O(n) O(n)

2、代码


3、代码问题


三、力扣

题目链接:力扣
left =x300
视频链接:代码随想录

1、思路

  • 时间复杂度: O ( n ) O(n) O(n)

2、代码


3、代码问题


四、力扣

题目链接:力扣
left =x300
视频链接:代码随想录

1、思路

  • 时间复杂度: O ( n ) O(n) O(n)

2、代码


3、代码问题


相关文章:

  • Redisson中的RateLimiter令牌桶限流简单使用
  • 如何在Linux系统上通过命令调用AI大模型?
  • RAG中对于PDF复杂格式文件的预处理的解决方案:MinerU
  • TCN-LSTM时间卷积长短期记忆神经网络多变量时间序列预测(Matlab完整源码和数据)
  • 比亚迪宋plus DMi 21款更新后,安装7.5版本高德地图机车版本
  • 用DrissionPage升级维基百科爬虫:更简洁高效的数据抓取方案
  • 《Docker概念解析》
  • Livox-Mid-70雷达使用------livox_mapping建图
  • ABC400E题解
  • 【教程/笔记】计算机组成原理第一章
  • QEMU-KVM加SPICE,云电脑诞生了
  • 嵌入式AI开发者职业成长路线图
  • 基于Flask的酷狗音乐数据可视化分析系统
  • JS 其他事件类型
  • c++项目 网络聊天服务器 实现;QPS测试
  • kotlin,数字滚动选择
  • <工具 Claude Desktop>配置 Whois MCP 用于 whois 查询
  • Matlab:三维绘图
  • 【PostgreSQL内核学习:深入理解 PostgreSQL 中的 tuplesort_performsort 函数】
  • 微软2025年AI技术深度解析:从多模态大模型到企业级代理服务
  • 丽之鑫科技网站后台怎么做/网络营销实训个人总结
  • 网站产品分类设计/公司企业网站建设方案
  • 中国人去菲律宾做网站赌钱会抓吗/中国seo高手排行榜
  • 国外网站怎么建设/卡一卡二卡三入口2021
  • 可以免费做会计题的网站/明星百度指数排行
  • 四川省工程建设管理协会网站/长沙关键词优化方法