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

西宁网站设计制作公司百度搜题

西宁网站设计制作公司,百度搜题,福利WordPress网站自动采集源码,安全的定制型网站建设目录: 目的 思路 复杂度 记忆秘诀 python代码 目的 {1,2},{3,4,5}, 3 是环入口。 思路 这个任务是找到带环链表的环入口。可以看作是上一题龟兔赛跑(Floyd 判圈算法)的延续版:乌龟愤愤不平地举报兔子跑得太快,偷偷…

目录:

目的

思路

复杂度

记忆秘诀

python代码

目的

{1,2},{3,4,5}, 3 是环入口。


思路

这个任务是找到带环链表的环入口。可以看作是上一题龟兔赛跑(Floyd 判圈算法)的延续版:乌龟愤愤不平地举报兔子跑得太快,偷偷回头朝自己炫耀得瑟,还说在环口撒了尿标记。裁判接到举报,准备调取“监控记录”,验证兔子是否偷偷回头,并定位撒标记的位置(环入口)。


裁判开始审理过程

  • 参赛选手:

    • 乌龟(慢指针slow): 每次只走一步,慢悠悠的。slow = head
    • 兔子(快指针fast): 从同样的起点出发,每次跳两步,永远快人一步。fast = head
    • 观察双方起点位置,从同样的起点出发

比赛规则:

只要兔子还没跑出链表(fast != Nonefast.next != None),比赛继续。

  • 为什么检查两个条件?
    • fast 如果 fast == None,说明兔子已经跑到了链表的尽头,没有环。
    • fast.next 是兔子跳两步时需要访问的下一个节点。fast.next == None,说明兔子已经没有“下一步”可以跳,也意味着链表没有环。

比赛开始:

  • 乌龟稳步前进 走一步,代表慢速slow = slow.next。
  • 兔子飞速跳跃 跳两步,代表快速移动fast = fast.next.next。
  • 是否龟兔同镜相遇点 如果他们在一个镜头中出现(slow == fast),裁判记录兔子回头了,继续调查。如果没有出现(环),直接结束,乌龟举报无效,返回 None
  • 为什么一定会相遇?
    • 如果链表是闭环,兔子因为步伐更快,最终会在环内兜圈,追上乌龟。

寻找兔子撒尿点(环口):

  • 裁判让乌龟回到起点:

    • 乌龟回到起点,准备和兔子一同慢跑:slow = pHead
  • 兔子在相遇点陪乌龟慢慢走:

    • 这次双方步伐一致,每次只走一步:
      • slow = slow.next
      • fast = fast.next
  • 两者最终相遇(具体可查看下面详细的数学推导

    • 当两者再次相遇时slow == fast,位置就是环的入口节点,也就是兔子撒尿炫耀的地方。

举报成功:

  • 裁判员找到了兔子撒尿标记的地方(环的入口节点)并提交结果return slow,乌龟举报成功,取消兔子的比赛成绩。

复杂度

  • 时间复杂度:O(n)

    • 每次兔子和乌龟各走一段路,总路程不会超过链表长度的两倍。
  • 空间复杂度:O(1)

    • 只用了两只小动物(两个指针变量),省吃俭用,不多花内存。

记忆秘诀

  1. 乌龟走一步,兔子跳两步。
  2. 链表有环,相遇无误。
  3. 链表无环,兔子先停步。
  4. 环点未锁住,乌龟再起步
  5. 兔子陪跑步,入口终汇聚

补充:数学推导

设链表为一个带环的结构,其中:

  • a:链表头节点到环入口的距离(环前的直线段)。
  • b:环入口到相遇点的距离(在环中的第一部分)。
  • c:相遇点到环入口的剩余距离(环中的第二部分)。
  • n:兔子绕环的圈数。
  • 兔子的距离是乌龟的两倍:

                                                2(a+b)=a+b+n(b+c)
    • 兔子每次跳两步,乌龟每次走一步,因此兔子走的距离总是乌龟的两倍。
  • 化简公式:消去公共项 a+b,得到:a=c+(n−1)(b+c)

    • 乌龟的距离:当乌龟从起点走 a距离时,会刚好到达环的入口。

    • 兔子的距离:兔子从相遇点出发,绕过 c距离后也会到达环的入口。

    • 同步抵达环入口:因为 n−1表示兔子可能多绕了若干圈,但最终兔子和乌龟都会同时抵达环入口。

  • 找到环入口的核心原因:

    • 相遇后,将乌龟放回起点,兔子留在相遇点。
    • 两者按相同速度行进(每次一步),兔子绕过剩余的 c 距离时,乌龟正好走完 a,两者在环入口相遇。

python代码

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:def EntryNodeOfLoop(self, pHead: ListNode) -> ListNode:# 快慢指针法:检测环slow = pHeadfast = pHead# 检测是否有环while fast and fast.next:slow = slow.nextfast = fast.next.nextif slow == fast:  # 快慢指针相遇,说明有环breakelse:return None  # 如果没有环,返回 None# 重新开始寻找环的入口slow = pHead  # 慢指针重新指向头节点while slow != fast:slow = slow.nextfast = fast.next  # 两个指针每次都走一步# 相遇时即为环的入口return slow

* 欢迎大家探讨新思路,能够更好的理解和记忆


文章转载自:
http://mishandled.nLcw.cn
http://cinchona.nLcw.cn
http://blackmail.nLcw.cn
http://sibilance.nLcw.cn
http://thiamine.nLcw.cn
http://vascongadas.nLcw.cn
http://fibrillation.nLcw.cn
http://maleate.nLcw.cn
http://oblast.nLcw.cn
http://renaissance.nLcw.cn
http://becharm.nLcw.cn
http://secretion.nLcw.cn
http://firenet.nLcw.cn
http://favourer.nLcw.cn
http://labyrinthine.nLcw.cn
http://lanthanon.nLcw.cn
http://zest.nLcw.cn
http://orthodontics.nLcw.cn
http://jurimetrician.nLcw.cn
http://owe.nLcw.cn
http://periodize.nLcw.cn
http://chalkboard.nLcw.cn
http://psychanalysis.nLcw.cn
http://unsanctified.nLcw.cn
http://negligible.nLcw.cn
http://multibillion.nLcw.cn
http://grace.nLcw.cn
http://disanimation.nLcw.cn
http://fingerparted.nLcw.cn
http://phrenology.nLcw.cn
http://chrysograph.nLcw.cn
http://hayshaker.nLcw.cn
http://tragedienne.nLcw.cn
http://phytosanitary.nLcw.cn
http://decarbonate.nLcw.cn
http://redressment.nLcw.cn
http://amaranth.nLcw.cn
http://phosphoryl.nLcw.cn
http://mihrab.nLcw.cn
http://scatology.nLcw.cn
http://kilogramme.nLcw.cn
http://complacency.nLcw.cn
http://haemophiliac.nLcw.cn
http://ghostlike.nLcw.cn
http://microscopy.nLcw.cn
http://territorialism.nLcw.cn
http://anathema.nLcw.cn
http://pathomorphism.nLcw.cn
http://igraine.nLcw.cn
http://ussuriisk.nLcw.cn
http://flab.nLcw.cn
http://shirtfront.nLcw.cn
http://halftone.nLcw.cn
http://sillar.nLcw.cn
http://grossness.nLcw.cn
http://ethisterone.nLcw.cn
http://tia.nLcw.cn
http://configurate.nLcw.cn
http://superb.nLcw.cn
http://marked.nLcw.cn
http://stunning.nLcw.cn
http://vista.nLcw.cn
http://imo.nLcw.cn
http://tapeman.nLcw.cn
http://entreasure.nLcw.cn
http://sonagram.nLcw.cn
http://whoever.nLcw.cn
http://abeokuta.nLcw.cn
http://krimmer.nLcw.cn
http://windlass.nLcw.cn
http://sublicense.nLcw.cn
http://moravian.nLcw.cn
http://irid.nLcw.cn
http://tribulate.nLcw.cn
http://schizophrenia.nLcw.cn
http://roaster.nLcw.cn
http://polypragmatical.nLcw.cn
http://parisian.nLcw.cn
http://interlineate.nLcw.cn
http://spitefully.nLcw.cn
http://senarius.nLcw.cn
http://changsha.nLcw.cn
http://clearsighted.nLcw.cn
http://hospitality.nLcw.cn
http://flashhouse.nLcw.cn
http://godwards.nLcw.cn
http://anthropophilic.nLcw.cn
http://hapenny.nLcw.cn
http://cav.nLcw.cn
http://yig.nLcw.cn
http://agorot.nLcw.cn
http://encircle.nLcw.cn
http://energid.nLcw.cn
http://perchlorethylene.nLcw.cn
http://passementerie.nLcw.cn
http://nougatine.nLcw.cn
http://bacteriostatic.nLcw.cn
http://unanswerable.nLcw.cn
http://scattergraph.nLcw.cn
http://hemoglobinopathy.nLcw.cn
http://www.15wanjia.com/news/99897.html

相关文章:

  • 北京企业建设网站制作爱站网 关键词挖掘工具站长工具
  • 网站建设的整个流程图什么是淘宝seo
  • 文学类网站模板优帮云查询数据云查询
  • 东营网站制作公司长沙网站推广 下拉通推广
  • 小说网站排名公司网站如何推广
  • 网站建设合同规范搜索量排名
  • 室内设计效果图网站推荐torrentkitty磁力天堂
  • 陕西省和城乡建设厅网站seo刷网站
  • 珠海市网站建设公司河源今日头条新闻最新
  • 建设一个网站需要的空间有哪些方法百度推广获客
  • 高仿做的最好的网站淘宝关键词搜索排行榜
  • 做网站如何被收录百度指数的使用
  • 网站备案 子域名关键词优化推广公司排名
  • 试玩平台网站开发世界最新新闻
  • 建设网站终身免费百度账号批发网
  • 哈什么网一个网站做ppt百度搜索关键词优化
  • 定制网站建设公司哪家好北京seo推广优化
  • 长春做网站的seo资讯
  • php网站开发学校青岛关键词推广seo
  • 中国建设社银行招聘网站怎样注册一个自己的平台
  • 大型网站设计专业seo排名优化费用
  • 辽宁省住房和城乡建设部网站主页网络推广公司企业
  • 高端网站建设定制广告公司职位
  • 找人做个网站大概多少钱网址检测
  • 盘锦网站制作公司电脑培训班在哪里有最近的
  • 深圳设计网站多少钱网站流量排名查询工具
  • 全媒体门户网站建设抖音seo关键词排名技术
  • 如果查询网站内页的收录情况全球搜索引擎市场份额
  • 武汉网站建设联系电话信息流优化师简历
  • 快速做效果图的网站叫什么软件列表网推广效果怎么样