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

福安 网站设计公司网站建设价格贵吗

福安 网站设计,公司网站建设价格贵吗,WordPress的index,北京网站开发网站建设咨询Problem: 142. 环形链表 II 题目:给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 文章目录整体思路完整代码时空复杂度时间复杂度:O(N)空间复杂度:O(1)整体思路 这段代码旨在…

Problem: 142. 环形链表 II
题目:给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

文章目录

  • 整体思路
  • 完整代码
  • 时空复杂度
    • 时间复杂度:O(N)
    • 空间复杂度:O(1)

整体思路

这段代码旨在解决一个比“判断环形链表”更进阶的问题:环形链表 II (Linked List Cycle II)。问题不仅要求判断链表中是否存在环,还要求找到环的入口节点。如果不存在环,则返回 null

该算法同样基于 Floyd判圈算法(快慢指针),但它巧妙地增加了第二阶段的查找,以精确定位环的入口。

  1. 第一阶段:判断是否有环并找到相遇点

    • 这部分与 hasCycle 问题的逻辑完全相同。
    • 使用一个 slow 指针(每次走一步)和一个 fast 指针(每次走两步),从 head 出发。
    • 如果链表有环,它们最终会在环内的某个点相遇。
    • 如果 fastfast.next 变为 null,说明无环,直接返回 null
  2. 第二阶段:从相遇点找到环的入口

    • 这是算法最精妙的部分,基于一个重要的数学推导:
      • 设链表头到环入口的距离为 a
      • 设环的长度为 b
      • 设环入口到快慢指针相遇点的距离为 x
      • 当快慢指针相遇时:
        • 慢指针走过的距离是 s = a + x
        • 快指针走过的距离是 f = a + n*b + x (快指针可能在环里绕了n圈)。
      • 由于快指针速度是慢指针的两倍,所以 f = 2s
      • 代入得:a + n*b + x = 2(a + x)
      • 化简得:a + x = n*b
      • 进一步变形得到:a = n*b - x。这个公式还可以写成 a = (n-1)*b + (b-x)
    • 核心结论a = (n-1)*b + (b-x) 这个公式告诉我们一个惊人的事实:
      • 链表头 (head)环入口的距离 a
      • 等于
      • 相遇点 (slow/fast) 沿环前进到环入口的距离 b-x,再加上 n-1 圈环的长度。
    • 利用结论:这意味着,如果我们现在设置两个指针,一个从 head 出发,另一个从相遇点 slow 出发,它们都以相同的速度(每次一步)前进,那么它们必然会在环的入口处相遇
  3. 算法实现步骤

    • 完成第一阶段后,如果 slow == fast,说明找到了相遇点。
    • 此时,保持 slow 指针在相遇点不动,将另一个指针(这里复用了 head 指针)重新置于链表的头部
    • 启动第二个 while 循环,让 headslow 指针同步前进(每次一步)。
    • head == slow 时,它们相遇的位置就是环的入口节点。返回 slow(或 head)。

完整代码

/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {/*** 找到环形链表的入口节点。* @param head 链表的头节点* @return 环的入口节点,如果无环则返回 null*/public ListNode detectCycle(ListNode head) {// 初始化快慢指针ListNode slow = head;ListNode fast = head;// 步骤 1: 判断是否有环,并找到相遇点while (fast != null && fast.next != null) {slow = slow.next;       // 慢指针走一步fast = fast.next.next;  // 快指针走两步// 如果相遇,说明有环if (slow == fast) {// 步骤 2: 从相遇点找到环的入口// 将一个指针(这里复用 head)重新置于链表头部// 另一个指针(slow)保持在相遇点// 两个指针以相同的速度前进,相遇点即为环的入口while (head != slow) {head = head.next;slow = slow.next;}// 返回环的入口节点return slow;}}// 如果循环结束,说明快指针到达链表末尾,不存在环return null;}
}

时空复杂度

时间复杂度:O(N)

  1. 第一阶段(找相遇点):如 hasCycle 问题分析,这部分的时间复杂度是 O(N)
  2. 第二阶段(找环入口)
    • head 指针从头开始走,直到环入口,走了 a 步。
    • slow 指针从相遇点开始走,直到环入口,也走了 a 步。
    • 由于 a < N,这部分的时间复杂度也是 O(N)

综合分析
算法的总时间复杂度是 O(N) + O(N) = O(N)

空间复杂度:O(1)

  1. 主要存储开销:该算法没有创建任何与输入规模 N 成比例的新的数据结构。
  2. 辅助变量:只使用了 slow, fast 和复用的 head 等几个指针变量。这些变量的数量是固定的,与链表长度无关。

综合分析
算法所需的额外辅助空间是常数级别的。因此,其空间复杂度为 O(1)。这是解决此问题最优的空间效率。


文章转载自:

http://zMVDSBmy.grbgn.cn
http://fQu1vECL.grbgn.cn
http://iQAePMNr.grbgn.cn
http://22yzOsMv.grbgn.cn
http://7fUtz0eT.grbgn.cn
http://4VGQ9pv0.grbgn.cn
http://e532iYLR.grbgn.cn
http://kH6cyqbC.grbgn.cn
http://pmk5hjeq.grbgn.cn
http://EKkaOG3x.grbgn.cn
http://Lx42ygEA.grbgn.cn
http://6GSYGnLh.grbgn.cn
http://9Z6mTqIU.grbgn.cn
http://FHgVodm4.grbgn.cn
http://b5rCDifP.grbgn.cn
http://71jIqhjg.grbgn.cn
http://X5b5vUYa.grbgn.cn
http://svxmkVAb.grbgn.cn
http://kWEIPUsm.grbgn.cn
http://EH8cDy7C.grbgn.cn
http://2TbR8EAY.grbgn.cn
http://VKm8FlkA.grbgn.cn
http://0S59NSrD.grbgn.cn
http://aaFF2L61.grbgn.cn
http://RyZpYueD.grbgn.cn
http://kAoCVuUp.grbgn.cn
http://XBcrf0bl.grbgn.cn
http://5Bzs9HBa.grbgn.cn
http://3CS2m68t.grbgn.cn
http://3NXnrbpQ.grbgn.cn
http://www.dtcms.com/wzjs/751646.html

相关文章:

  • 一个网站里面只放一个图片怎么做的室内设计学校哪些比较好
  • 网站建设实训步骤网页制作教程(第三版)
  • 个人网站备案怎么做织梦网站被做跳转
  • 建设一个网站的所有代码如何自己制作网页
  • 百度权重9的网站php视频转码
  • 建立网站编程wordpress 登陆接口
  • wordpress 远程插件安装 ftpseo3分子的立体构型
  • 江苏百城建设有限公司官方网站网站菜单分类怎么做
  • 谷歌网站推广费用wordpress登入插件
  • 需要注册的网站建设python安装教程
  • 济南网站建设 行知科技哪里可以做网站的
  • 焦作建设银行门户网站南昌百度关键词搜索
  • 企业开源网站系统地方门户网站赚钱
  • 网站社区怎么创建网页设计如何居中
  • cpa网站建设教程湖南网站开发公司
  • 电脑建设网站在互联网访问南充做网站公司
  • 旅游网站建设的目标是什么青岛网站建设及app
  • 太原企业网站制作公司wordpress vr主题公园
  • 初二做网站的首页模板wordpress太卡
  • 网站设计欣赏中国建网站推广效果怎么样
  • 网站建设 新闻怎么样可以做网站充值代理
  • 网站建设公司销售技巧ajax+jsp网站开发从入门到精通
  • php 企业网站开发实例seo推广是什么意怿
  • 河北建设工程信息网站织梦做的网站页面打不开
  • dedecms 网站导航高级网站开发工程师证
  • 亿恩 网站备案长春怎么注册网站平台
  • 上海市建设协会网站模板网站会影响网站优化吗
  • 淘客网站如何做能加快收录wordpress商品管理
  • 网站注册地查询网店怎么开
  • 上海网站建设索王道下拉北京最新消息今天新闻