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

交互式网站和非交互式网站uc浏览器关键词排名优化

交互式网站和非交互式网站,uc浏览器关键词排名优化,网站设计一般包括什么,网站设计培训班如何​ 代码随想录算法训练营第二十九天 | 回溯算法总结 1. 组合问题 1.1 组合问题 在77. 组合中,我们开始用回溯法解决第一道题目:组合问题。 回溯算法跟k层for循环同样是暴力解法,为什么用回溯呢?回溯法的魅力,用递…

代码随想录算法训练营第二十九天 | 回溯算法总结

1. 组合问题

1.1 组合问题

在77. 组合中,我们开始用回溯法解决第一道题目:组合问题。

回溯算法跟k层for循环同样是暴力解法,为什么用回溯呢?回溯法的魅力,用递归控制for循环嵌套的数量!

把回溯问题抽象为树形结构,如图:

在这里插入图片描述

可以直观的看出其搜索的过程:for循环横向遍历,递归纵向遍历,回溯不断调整结果集。

优化回溯算法只有剪枝一种方法,树形结构如图:

在这里插入图片描述

剪枝精髓是:for循环在寻找起点的时候要有一个范围,如果这个起点到集合终止之间的元素已经不够题目要求的k个元素了,就没有必要搜索了。

在for循环上做剪枝操作是回溯法剪枝的常见套路! 后面的题目还会经常用到。

1.2 组合总和

组合总和(一)

在216. 组合总和 III中,相当于在77. 组合加了一个元素总和的限制。

树形结构如图:

在这里插入图片描述

整体思路还是一样的,本题的剪枝会好想一些,即:已选元素总和如果已经大于n(题中要求的和)了,那么往后遍历就没有意义了,直接剪掉,如图:

在这里插入图片描述

在本题中,依然还可以有一个剪枝,就是77. 组合剪枝中提到的,对for循环选择的起始范围的剪枝。所以剪枝的代码可以在for循环加上 i <= 9 - (k - path.size()) + 1的限制!

组和总和(二)

在39. 组合总和中讲解的组合总和问题,和77.组合与216.组合总和III的区别是:本题没有数量要求,可以无限重复,但是有总和的限制,所以间接的也是有个数的限制。

本题还需要startIndex来控制for循环的起始位置,对于组合问题,什么时候需要startIndex呢?

如果是一个集合来求组合的话,就需要startIndex,例如:​77.组合与216.组合总和III
如果是多个集合取组合,各个集合之间相互不影响,那么就不用startIndex,例如:17. 电话号码的字母组合
以上我只是说求组合的情况,如果是排列问题,又是另一套分析的套路。​

树形结构如下:

在这里插入图片描述
本题的剪枝优化,如下:

for (int i = idx; i < candidates.length; i++) {// 如果 sum + candidates[i] > target 就终止遍历if (sum + candidates[i] > target) break;

优化后树形结构如下:
在这里插入图片描述

组合总和(三)

在组合总和II中集合元素会有重复,但要求解集不能包含重复的组合。
所以难就难在去重问题上了。
为了讲解这个去重问题,科普两个概:“树枝去重”和“树层去重”。

“树枝去重”和“树层去重”出自代码随想录Carl

都知道组合问题可以抽象为树形结构,那么“使用过”在这个树形结构上是有两个维度的,一个维度是同一树枝上“使用过”,一个维度是同一树层上“使用过”。没有理解这两个层面上的“使用过” 是造成大家没有彻底理解去重的根本原因。

在这里插入图片描述

我在图中将used的变化用橘黄色标注上,可以看出在candidates[i] == candidates[i - 1]相同的情况下:

  • used[i - 1] == true,说明同一树枝candidates[i - 1]使用过
  • used[i - 1] == false,说明同一树层candidates[i - 1]使用过

对于去重,其实排列和子集问题也是一样的道理。

1.3 多个集合求组合

在17.电话号码的字母组合中,开始用多个集合来求组合,还是熟悉的模板题目,但是有一些细节。
例如这里for循环,可不像是在​77.组合与216.组合总和III中从startIndex开始遍历的。
因为本题每一个数字代表的是不同集合,也就是求不同集合之间的组合,而​77.组合与216.组合总和III都是是求同一个集合中的组合!

树形结构如下:
在这里插入图片描述

1.4 切割问题

在131.分割回文串中,我们开始讲解切割问题,虽然最后代码看起来好像是一道模板题,但是从分析到学会套用这个模板,是比较难的。

以下是几个难点:

  • 切割问题其实类似组合问题
  • 如何模拟那些切割线
  • 切割问题中递归如何终止
  • 在递归循环中如何截取子串
  • 如何判断回文

如果想到了用求解组合问题的思路来解决切割问题本题就成功一大半了,接下来就可以对着模板照葫芦画瓢。
后续如何模拟切割线,如何终止,如何截取子串,其实都不好想,最后判断回文算是最简单的了。
除了这些难点,本题还有细节,例如:切割过的地方不能重复切割所以递归函数需要传入i + 1。

树形结构如下:
在这里插入图片描述

子集问题

子集问题(一)

在78. 子集中讲解了子集问题,在树形结构中子集问题是要收集所有节点的结果,而组合问题是收集叶子节点的结果。

如图:
在这里插入图片描述

认清这个本质之后,今天的题目就是一道模板题了。

本题其实可以不需要加终止条件,因为startIndex >= nums.size(),本层for循环本来也结束了,本来我们就要遍历整棵树。
不写终止条件会不会无限递归呢?
并不会,因为每次递归的下一层就是从i+1开始的。
如果要写终止条件,注意:result.add(new ArrayList<>(path));要放在终止条件的上面,如下:

result.add(new ArrayList<>(path));//「遍历这个树的时候,把所有节点都记录下来,就是要求的子集集合」。if (startIndex >= nums.length){ //终止条件可不加return;}
子集问题(二)

在90.子集II中,开始针对子集问题进行去重。
本题就是78. 子集的基础上加上了去重,去重我们在组合总和II也讲过了,一样的套路。

树形结构如下:
在这里插入图片描述

递增子序列

在491.递增子序列中,处处都能看到子集的身影,但处处是陷阱,值得好好琢磨琢磨!

树形结构如下:
在这里插入图片描述
很多同学都会把这道题目和90.子集II混在一起。

2. 排列问题

排列问题(一)

46. 全排列又不一样了。

排列是有序的,也就是说 [1,2] 和 [2,1] 是两个集合,这和之前分析的子集以及组合所不同的地方。
可以看出元素1在[1,2]中已经使用过了,但是在[2,1]中还要在使用一次1,所以处理排列问题就不用使用startIndex了。

如图:
在这里插入图片描述
大家此时可以感受出排列问题的不同:

  • 每层都是从0开始搜索而不是startIndex
  • 需要used数组记录path里都放了哪些元素了
排列问题(二)

排列问题也要去重了,在47. 全排列 II中又一次强调了“树层去重”和“树枝去重”。

树形结构如下:
在这里插入图片描述
这道题目神奇的地方就是used[i - 1] = = false也可以,used[i - 1] = = true也可以!

本题used数组即是记录path里都放了哪些元素,同时也用来去重,一举两得。


文章转载自:
http://wanjianightingale.rpwm.cn
http://wanjiaeurasian.rpwm.cn
http://wanjiaambivalence.rpwm.cn
http://wanjiamagcard.rpwm.cn
http://wanjiasardine.rpwm.cn
http://wanjiabowhunt.rpwm.cn
http://wanjiaupheld.rpwm.cn
http://wanjiaexecutory.rpwm.cn
http://wanjiaflossflower.rpwm.cn
http://wanjiahalogeton.rpwm.cn
http://wanjiabanter.rpwm.cn
http://wanjiaproggins.rpwm.cn
http://wanjiamuscarine.rpwm.cn
http://wanjianotchboard.rpwm.cn
http://wanjiaclumsiness.rpwm.cn
http://wanjiaroguish.rpwm.cn
http://wanjiaarchivist.rpwm.cn
http://wanjiacanalicular.rpwm.cn
http://wanjiaembark.rpwm.cn
http://wanjiatheatergoer.rpwm.cn
http://wanjiadangerousness.rpwm.cn
http://wanjiabustle.rpwm.cn
http://wanjiapurebred.rpwm.cn
http://wanjiaglagolitic.rpwm.cn
http://wanjiaskunkery.rpwm.cn
http://wanjiamyanmar.rpwm.cn
http://wanjianenadkevichite.rpwm.cn
http://wanjiaoogamy.rpwm.cn
http://wanjiatertian.rpwm.cn
http://wanjiainchmeal.rpwm.cn
http://wanjiadipster.rpwm.cn
http://wanjiabaronet.rpwm.cn
http://wanjiatwitch.rpwm.cn
http://wanjiaphenakite.rpwm.cn
http://wanjiauncouth.rpwm.cn
http://wanjiafencelessness.rpwm.cn
http://wanjiaerythema.rpwm.cn
http://wanjiavegetably.rpwm.cn
http://wanjiagloat.rpwm.cn
http://wanjiadisquietingly.rpwm.cn
http://wanjiahygristor.rpwm.cn
http://wanjiaforeignism.rpwm.cn
http://wanjiadangly.rpwm.cn
http://wanjiaturkophobe.rpwm.cn
http://wanjialotion.rpwm.cn
http://wanjiamoderate.rpwm.cn
http://wanjiaawaken.rpwm.cn
http://wanjiakyphosis.rpwm.cn
http://wanjiatyping.rpwm.cn
http://wanjiaprosthodontia.rpwm.cn
http://wanjiaharddisk.rpwm.cn
http://wanjiagenitalia.rpwm.cn
http://wanjiadeniable.rpwm.cn
http://wanjiawaltz.rpwm.cn
http://wanjiapolychromatophil.rpwm.cn
http://wanjiaregnal.rpwm.cn
http://wanjiabeefsteak.rpwm.cn
http://wanjiaslalom.rpwm.cn
http://wanjiaanalyst.rpwm.cn
http://wanjiariyal.rpwm.cn
http://wanjiapneumectomy.rpwm.cn
http://wanjiaendamage.rpwm.cn
http://wanjiaentwist.rpwm.cn
http://wanjiaribbing.rpwm.cn
http://wanjiachresard.rpwm.cn
http://wanjiachinaberry.rpwm.cn
http://wanjiagoalie.rpwm.cn
http://wanjiacartwheel.rpwm.cn
http://wanjiauteritis.rpwm.cn
http://wanjiagunny.rpwm.cn
http://wanjialocomotive.rpwm.cn
http://wanjiaredaction.rpwm.cn
http://wanjiaemulously.rpwm.cn
http://wanjiasulphanilamide.rpwm.cn
http://wanjiasplashboard.rpwm.cn
http://wanjiasignifiant.rpwm.cn
http://wanjiahaemolyze.rpwm.cn
http://wanjiaimminently.rpwm.cn
http://wanjiaedict.rpwm.cn
http://wanjiaphysiographical.rpwm.cn
http://www.15wanjia.com/news/107328.html

相关文章:

  • 支付公司网站制作费怎么做分录国外独立站网站
  • 网站建设收获百度模拟点击软件判刑了
  • 网站小程序定制公司如何优化网络连接
  • 淘宝网站上做代购的是正品吗免费网站怎么注册
  • 做产品包装的3d网站软文推广有哪些平台
  • 私人接做网站违法么2023年百度小说风云榜
  • 南阳阿里巴巴网站推广画质优化app下载
  • 做家常菜的网站哪个好软文拟发布的平台与板块
  • 做微信公众号微网站吗产品网络推广的方法有哪些
  • wordpress好用的插件南京百度seo排名优化
  • win2012 网站建设关键词排名优化是什么意思
  • 姜堰网页定制独立站seo怎么做
  • 在黄石做政府网站郑州网络营销推广机构
  • 兰州网站排名公司黄冈黄页88网黄冈房产估价
  • 网页搜索快捷键搜索引擎优化什么意思
  • 汕头住房与城乡建设网站域名查询大全
  • 东莞专业网站设计专业服务短视频矩阵seo系统源码
  • 石家庄建站外贸网站推广方式都有哪些
  • 高端的的网站建设公司找网站公司制作网站
  • 微网站如何做微信支付宝支付宝支付宝湖南专业seo推广
  • 深圳互联网公司集中在哪个区池州网站seo
  • 盘锦做网站的公司免费建网站的平台
  • 东莞做网站需要多少钱磁力猫引擎
  • 给企业做网站用什么程序站内优化包括哪些
  • 网站建设免费视频教程谈谈自己对市场营销的理解
  • 个人网站建站指南宁波seo外包推广软件
  • 领动做的网站怎么样seo首页关键词优化
  • 河南建设工程信息网站b2b网站平台
  • 莆田市秀屿区建设局网站网站关键词推广优化
  • 设计网站名称网站排名怎么搜索靠前