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

高埗做网站网站优化是在哪里做修改

高埗做网站,网站优化是在哪里做修改,金华金义东轨道建设网站,设计师分享网站那么上一题我们已经知道了双指针的变法以及拓展的用法,那么这里我们直接难度升级。 想回去复习的这里放个链接:链表的面试题8之环形链表-CSDN博客 题目链接:142. 环形链表 II - 力扣(LeetCode) 我们来看这道题目主要…

那么上一题我们已经知道了双指针的变法以及拓展的用法,那么这里我们直接难度升级。

想回去复习的这里放个链接:链表的面试题8之环形链表-CSDN博客

题目链接:142. 环形链表 II - 力扣(LeetCode)

 我们来看这道题目主要想让我们干什么,上一题是让我们去判断是否为环形链表,而这一题是直接告诉你这就是一个环形链表,让你自己去探寻环形链表各节点的关系,用地址来判断这个节点是否是第一个成环的节点。

当然这一题还是用双指针的解法,至于为什么很简单,单指针解决不了这个问题呗。我们上一题探讨过快慢指针的步调的大小,涉及快慢指针的算法题中,通常习惯使用快指针每次走两步,慢指针走一步的方式。

这里我们需要判断的难点是什么??

我们之前用到的快慢指针都是通过他们的距离差让这两个指针相遇来得出这个是环形链表,但是这里我们相遇的点万一不是第一个点呢??那么我们的判断不就成了无效判定了吗?所以我们笃定一点,这道题像上一道题那样的关系判断是不可取的,我们应该找其他的关系,使得让两个节点一定在第一个成环的节点相遇。

那我们直接来画图看一下:

这里我们设从头节点到入环的第一个节点的距离为a,设环长为c。

再设相遇的时候,慢指针走了b步,那么这里快指针就走了2b步。

再设快指针比慢指针多走了k圈环,那么我们就能得到2b-b=kc,即b=kc。

再看我们的慢指针,从头节点开始,到相遇点走了b-a步,也就是(kc-a)步。

这也就是说,从相遇点开始,再走a步,就会到达我们的入环点。

为什么?

因为环长就是c,看图中的箭头,一根箭头代表一个长度。所以再走a步,也就是说(kc-a+a)=kc步

也就是在入环口处。那么哪里还有a步的地方呢?

我再往图里一看,那就是头节点处,所以我如果让指针从头节点和相遇点处分别开始移动,那么两个人步伐都为1的情况下肯定会在入环口处相遇。

结论就是:让一个指针从链表起始位置开始遍历链表,同时让一个指针从判环时相遇点的位置开始绕环运行,两个指针都是每次均走一步,最终肯定会在入口点的位置相遇。

但要注意一点:指针从相遇点开始,移动 a 步后恰好走到入环口,但在这个过程中,可能会多次经过入环口。 因为环长和入环前的长度可能会有误差。

struct ListNode* detectCycle(struct ListNode* head) {struct ListNode* slow = head;struct ListNode* fast = head;while (fast && fast->next) {slow = slow->next;fast = fast->next->next;if (fast == slow) { // 相遇while (slow != head) { // 再走 a 步slow = slow->next;head = head->next;}return slow;}}return NULL;
}

这里把代码贴一下,整个思路是非常清晰的,效率也非常高。

时间复杂度:O(n),其中 n 为链表的长度。
空间复杂度:O(1),仅用到若干额外变量。

这里再带大家注意两点推导设条件的前提:1.慢指针在进入环之前,快指针就已经在环内至少走了n圈,而n至少为1。因为快指针至少要走一圈,才能与后进入的慢指针相遇。

2.慢指针进环之后,快指针肯定会在慢指针走一圈之内追上慢指针
因为:慢指针进环后,快慢指针之间的距离最多就是环的长度,而两个指针在移动时,每次它们至今的距离都缩减一步,因此在慢指针移动一圈之前快指针肯定是可以追上慢指针的。

好了,这道题就讲到这里

如果你觉得对你有帮助,可以点赞关注加收藏,感谢您的阅读,我们下一篇文章再见。

一步步来,总会学会的,首先要懂思路,才能有东西写。


文章转载自:

http://DZJgFrT3.ntgsg.cn
http://REpPy3jn.ntgsg.cn
http://kN9KLnrR.ntgsg.cn
http://aNYxUVFK.ntgsg.cn
http://Pw73hoIo.ntgsg.cn
http://xg94SEHO.ntgsg.cn
http://FIf3MhHv.ntgsg.cn
http://iZD9423K.ntgsg.cn
http://mu2ZTDwP.ntgsg.cn
http://MVGzxvXN.ntgsg.cn
http://U5UiPNqf.ntgsg.cn
http://wvg7Wkr0.ntgsg.cn
http://vNNs0Xu9.ntgsg.cn
http://xvqB1ePu.ntgsg.cn
http://Uj6yHynZ.ntgsg.cn
http://ePLDmcJQ.ntgsg.cn
http://52qluVx8.ntgsg.cn
http://xfFxgnq2.ntgsg.cn
http://jVzfBE6J.ntgsg.cn
http://G8jqDJaS.ntgsg.cn
http://BIv0q1et.ntgsg.cn
http://kYhUqiya.ntgsg.cn
http://iDUTBOwO.ntgsg.cn
http://XheGlTLd.ntgsg.cn
http://RAunAGlV.ntgsg.cn
http://6bzVXisO.ntgsg.cn
http://AZyzW61R.ntgsg.cn
http://uIMGbdUt.ntgsg.cn
http://no0C2va9.ntgsg.cn
http://zW5Laiug.ntgsg.cn
http://www.dtcms.com/wzjs/665497.html

相关文章:

  • 网站后台管理 ftp青海省建设监理协会网站
  • 2015年做啥网站致富网站设计需要什么专业
  • 写作网站哪个比较赚钱做任务的网站
  • 网站怎么做效果更好试述网站建设的步骤过程
  • 自己做视频网站流量钱网站服务器哪家好些
  • 有没有专门找装修公司的网站哪个网站可以做高数题
  • 百度站长工具验证无锡做设计公司网站
  • 行业网站大全做视频网站每部电影都要版权
  • 响应式网站建设的好处免费域名注册免备案
  • 网站的建设ppt模板鲨鱼座 网站建设
  • php网站开发的第三章wordpress 页面
  • 可以在线做护理题的网站摄影网站设计论文
  • 公司网站做一年多少钱wordpress文章增加字段
  • 嘉定个人网站建设免费招商加盟代理
  • 建设部网站信息系统交通局网站建设方案
  • 顺德网站建设公司有哪些网站活动推广方案
  • 广东广州自己建网站公司wordpress账户
  • 佛山市网站建设分站企业网站设计 psd
  • 门户网站创新的方式有wordpress 来源统计
  • 上海外贸网站建设公司价格想学网站建设
  • 如何自己建设商城网站.net开发手机网站
  • 辽宁平台网站建设哪里好自贡网站平台开发
  • 用ps做网站画布一般建多大建外贸网站用什么主机
  • 珠海医疗网站建设公司排名企业网站建设项目计划书
  • 萧山建设局网站首页影楼行业网站
  • 朗域装饰口碑怎么样友情链接seo
  • 岳阳市网站建设推广门户网站建设基本情况
  • 建个电子商务网站多少钱网站开发nodejs
  • dede织梦php文章图片网站源码 完整后台 带在线音乐idea制作网站
  • 上海建设集团网站什么是seo优化的有哪些