递归回溯
文章平均质量分 79
AiryView
等待雪融的你
展开
-
教你做回溯题(Leetcode电话号码的字母组合、括号生成和单词搜索)-第四期
前三期指路: 第一期 第二期 第三期 这次应该是最后一期了,前几次的题目比较常规,基本是什么子集或者排列什么的书面语言,这期就总结一些比较偏向应用类的题目,当然其实本质还是那一套。 例题 电话号码的字母组合 给定一个仅包含数字2-9的字符串,返回所有能表示的字母组合,其中这个数字与字母的映射关系如下(就是我们手机键盘): 定义一个映射向量方便操作 vector<string> mapping{"abc","def","ghi","jkl","mno","pqrs","t.原创 2021-08-29 14:44:57 · 160 阅读 · 0 评论 -
教你做回溯题(Leetcode全排列和全排列II)-第三期
前两期指路: 第一期:第一期 第二期:第二期 例题 全排列 给定一个不含重复数字的数组,返回所有可能的全排列,对于组合集合来说,要考虑顺序 ①选择一个实例[1,2,3]画图 ②确定结束条件 由于是全排列,所以最后结果的集合一定包含多有的数,那么结束条件是path的长度与题目给的nums一样 //结束条件 if(path.size()==nums.size()){ res.push_back(path); } ③确定选择列表,我们发现这题选择列表相对于前几期没那么有规律。 .原创 2021-08-28 16:30:58 · 189 阅读 · 0 评论 -
教你做回溯题(Leetcode组合总数和组合总数II)-第二期
定义什么的就不多说了,上期都有,还有这期涉及到上期的知识,最好结合上期看。 上期指路:递归回溯题目总结(第一期) 例题 组合总和 给定一个无重复元素的正整数数组和一个目标正整数,找出数组中所有可以使数字和为目标正整数的组合(数组中的一个数可以被重复使用) ①选择一个实例[2,3,5]与8画图 这个图没有画完,但是基本清楚大致,流程。 ②确定结束条件 定义一个sum,记录一次深入递归遍历的和,如果等于目标数,则结束,加入结果集。 //条件判断 if(sum==target){ .原创 2021-08-27 17:04:11 · 152 阅读 · 0 评论 -
教你做回溯题(Leetcode子集和子集 II)-第一期
什么时候需要用到回溯,为什么回溯和递归有关? 在了解回溯之前,我们需要了解dfs,dfs就是深度优先遍历,简单来说,dfs就是一口气往往某个深度方向搜索,而回溯是建立在dfs的基础之上的,在搜索时,达到结束条件后,需要回复之前改变的状态,再次搜索,就是说比dfs多了一个状态重置 ...原创 2021-08-27 15:55:40 · 284 阅读 · 0 评论