首页 > 其他分享 >回溯理论基础及leetcode

回溯理论基础及leetcode

时间:2023-04-13 10:24:07浏览次数:44  
标签:排列 递归 理论 个数 回溯 集合 leetcode

回溯

与递归相辅相成;回溯是递归的副产品,只要有递归就会有回溯。
回溯函数也就是递归函数,指的都是一个函数。

回溯搜索法

纯暴力搜索
解决的问题

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

理解

抽象的不易理解;抽象为图形结构--树形结构
N叉树【树的宽度:集合的大小(for处理);深度:递归的深度(递归处理)】

模板

void backtracking(参数){
  if(终止条件){
    收集结果;
    return;
  }

  //单层搜索
   for(选择:本层集合中元素(树中节点孩子的数量就是集合的大小)){//集合元素集
      处理节点;
      backtracking(路径,选择列表);//递归函数;
      回溯操作; //(12,把2回溯,变13;没有回溯操作就会递归为123)
    }
  return;
}

leetcode题目

组合

77.组合

for循环嵌套太多层了

标签:排列,递归,理论,个数,回溯,集合,leetcode
From: https://www.cnblogs.com/yunshalee/p/17312416.html

相关文章

  • #yyds干货盘点# LeetCode面试题:搜索二维矩阵
    1.简述:编写一个高效的算法来判断 mxn 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。 示例1:输入:matrix=[[1,3,5,7],[10,11,16,20],[23,30,34,60]],target=3输出:true示例2:输入:matrix=[[1,......
  • Leetcode 2. 两数相加
    这道题让我想起了acwing里的高精度加法,因为这里的加法也是超过100位了。于是套着模板写了一下,然后看了一下评论区,发现链表再套vector属于是脱裤子放屁了/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNod......
  • web前端开发理论解析
    在Linux下,()命令是只查询系统内存的使用情况。A.topB.vmstatC.free-mD.iostatC.`free-m`命令是用来查询Linux系统内存使用情况的命令,它会显示空闲内存、已使用内存、缓存等信息。而`top`、`vmstat`和`iostat`命令则不仅可以查询内存使用情况,还能查看CPU、磁盘和网......
  • 哈希表理论基础——学习笔记
    常见的三种哈希结构数组set(集合)map(映射)HashSet特点:HashSet无序(没有下标),不可重复HashSet为HashMap的key部分TreeSetTreeSet无序(没下标),不可重复,但是可以排序TreeSet为TreeMap的key部分mapMap和Collection没有继承关系Map以(k......
  • [C++]LeetCode1147. 段式回文
    [C++]LeetCode1147.段式回文题目描述Difficulty:困难RelatedTopics:贪心,双指针,字符串,动态规划,哈希函数,滚动哈希你会得到一个字符串text。你应该把它分成k个子字符串(subtext1,subtext2,…,subtextk),要求满足:subtexti是非空字符串所有子字符串的连接......
  • mysql查询过程优化--理论及实践过程总结
    首先推荐一篇写的特别详细的帖子,感觉写的太好了。全看懂了,就不用看我下面的废话了。https://blog.52ipc.top/archives/149.html然后记录点自己解决的经验正式开始写一下我的优化过程:问题:MySQL查询count()from(括号里有七八个leftjoin),导致查询速度特别慢,结果大概是40s+1、......
  • Rabin-Karp-leetcode187
    DNA序列 由一系列核苷酸组成,缩写为 'A', 'C', 'G' 和 'T'.。例如, "ACGAATTCCG" 是一个 DNA序列 。在研究 DNA 时,识别DNA中的重复序列非常有用。给定一个表示 DNA序列 的字符串 s ,返回所有在DNA分子中出现不止一次的 长度为 10 的序列(子字符串)。你可以按 ......
  • LeetCode 450.删除二叉搜索树的结点
    1.题目:给定一个二叉搜索树的根节点root和一个值key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。示例1:输入:root=[5,3,6,2,4,null,......
  • leetcode 185
    部门工资前三高的所有员工 selectd.nameasDepartment,e.nameasEmployee,e.salaryasSalaryfromEmployeeeleftjoinDepartmentdone.departmentId=d.Idwhere2>=(selectcount(distincte1.salary)fromEmployeee1wheree.salary<e1.salary......
  • LeetCode #448 找到所有数组中消失的数字
    基本思路为了满足题目要求的不使用额外的存储空间(当然返回的数组除外),并且时间复杂度控制在O(n),最多只能常数级别遍历,因此考虑将原数组视作一个"哈希表"。遍历原数组,将【1,n】上的值域映射到【0,n-】的坐标上,某个数x扫描到一次则将这个数x映射的x-1的坐标处的值加上n。......