首页 国际新闻正文

妖道至尊,热销算法书《漫画算法:小灰的算法之旅》,送10本,裂锦



本文作者:魏梦舒

微信大众号“程序员小灰”的作者,具有多年软件职业从业经历,先后在京东金融、摩拜科技从事研制作业,对算法流影云笛加多少法伤有必定的爱好和经历。


尾部赠书10:《漫画算法:小灰的算法之旅》




标题

有一个单向链表,链表妖道至尊,热销算法书《漫画算法:小灰的算法之旅》,送10本,裂锦中有或许呈现“环”,就像下图这样。那么,如何用程序来判别该链表是否为有环链表呢?


哦,让我想想啊……

有了!从头节点开端遍历整个单链表

办法1

首要从头节点开端,顺次遍历单链表中的每一个节点。每遍历一个新节点,就从头查看新节点之前的一切节点明尊焚影,用新节点和此节点之前一切节点顺次做比较。假如发现新节点和之前的某个节点相同,则阐明该节点被遍历过两次,链表有环;假如之前的一切节点中不存在与新节点相同的节点,就持续遍历下一个新节点,持续重复方才的操作。凤求凰紫晓

 

就像图中这样,当遍历链表节点7时,从头拜访节点5和节点3,发现已遍历的节点中并不存在节点7,则持续往下遍历。

当第2次遍历到节点2时,从头球王开荒纪拜访从前遍历过的节点,发现现已遍历过节点2,阐明链表有环。

假定链表的节点数量为n,则该解法的时刻复杂度为O(n2)。由于并没有创立额定的存储空间,所以空间复杂度为O(1)

这权且算是一种办法,功率有没有或许更高?

哦,让我想想啊……

 

或许,我创立一个妖道至尊,热销算法书《漫画算法:小灰的算法之旅》,送10本,裂锦哈希表,然后……

办法2

首要创立一个以节点妖道至尊,热销算法书《漫画算法:小灰的算法之旅》,送10本,裂锦ID为Key的HashSet调集,用来存储从前遍历过的节点。然后相同从头节点开端,顺次遍历单链表中的每一个节点。每遍历一个新节点,都用新节点和HashSet调集中存储的节陈少金点进行比较,假如发现HashSet中存在与之相同的节点ID高语芯,则阐明链表有环,假如HashSet中不存在七原与新节点相同的节点ID,就把这个新节点ID存入HashSet中,之后进入下一节点,持续重复方才的操作。

遍历过53的效果图

遍历过5372681的效果图

当再一次遍历节点2时,查找HashSet,发现节点已存在。

由此可大庆新玛特砍人知,链表有环。

这个办法在流程上和办法1相似,实质的区别是运用了HashSet作为额定的缓存。

假定链表的节点数量为n,则该解法的时刻复杂度是O(n)。由于运用了额定的存储空间,所以算法的空间复杂度相同是O(n)OK,这种办法在时刻上现已是最优了。

有没有或许在空间上也得到优化?

让空间复杂度下降?

…王国华追凶…一同让时刻复杂度不变,想不出来啊

不要紧,今日就到这儿,回家等告诉吧。


办法3

小灰,刚刚的面试成果怎样样?

 唉……

给我讲讲怎样更高效判别链表有环呀?

有环链表判别是根底,面试官都喜爱考察

有一个奇妙的办法——运用两个指针

 首要创立两个指针p1和p2(在J爱威奶ava里便是两个目标引证),让它们一同指向这个链表的头节点。然后开端一个大循环,在循环体中,让指针p1每次向后移动1个节点,让指针p2每次向后移动2个节点,然后比较两个指针指向的节点是否相同。假如相同,则能够判别出链表有环,假如不同,则持续下一次循环。

1步,p1p2都指向节点5

 2步,p1指向节点3p2指向节点7

3步,p1指向节点7p2指向节点6

4步,p1指向节点2caoornp妖道至尊,热销算法书《漫画算法:小灰的算法之旅》,送10本,裂锦2妖道至尊,热销算法书《漫画算法:小灰的算法之旅》,送10本,裂锦指向节点1

5步,p1指向节点6p2也指向节点6p1p2所指相同,阐明链表有环。 

学lumion快捷键过小学刑宇菲奥数的读妖道至尊,热销算法书《漫画算法:小灰的算法之旅》,送10本,裂锦者,必定传闻过数学上的追及问题。此办法就相似于一个追及问题。

在一个环形跑道上,两个运发动从同一地址起跑,一个运李维亚发动速度快,另一个运发动速度慢。当两人跑了一段时刻后,速度快的运发动必然会再次追上并超越速度慢的运发动,原因很简单,由于跑道是环形的。

假定链表的节点数量为n,则该算法的时刻复杂度为O(n)。除两个指针外,没有运用任何额定的存储空间,所以空间复杂度是O(1)

理解了,这真是个好办法!

本文节选自电子工业出版社博文角度新书《漫画算法:小灰的算法之旅》。算法,既是准程序员们人生第一次面试难以绕开的中心论题成渝钒钛科技有限公司,也是武圣羊杂割自学过程中难以快速突击搞定的妖道至尊,热销算法书《漫画算法:小灰的算法之旅》,送10本,裂锦硬骨头。当咱们面临“有必要体系学习”和“学起来单调难明”的双面夹攻时无敌之界面灾星,本书为你拓荒一道“恣意门”,从此,艰涩拥堵的苦行留给他人,这儿只要高兴的旅程……,扫码购买,尾部赠书

内容简介本书经过虚拟主人公小灰的心路历程,用漫画的方式叙述了算法和数据结构的根底知识、复杂多变的算法面试标题及娱悦女人的舌技入门算法的实践使用场景。


漫画算法:小灰的算法之旅10本

▼ 点击【阅览原文】参加赠书抽小敏原唱这条路一同走奖活动

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。