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

网站开发与运营营销策划案ppt优秀案例

网站开发与运营,营销策划案ppt优秀案例,百度爱做网站,深圳做网站佰达科技三十问题描述 给定一个单链表,可能存在一个环。我们的目标是找到环的入口节点,即从这个节点开始,链表进入循环。如果没有环,则返回 null。 将链表问题转化为数学问题 状态序列与循环 我们可以将链表节点视为状态,每个节点的 next 指针代表状态转移函数 f f f。从头节点开始,我…

问题描述

给定一个单链表,可能存在一个环。我们的目标是找到环的入口节点,即从这个节点开始,链表进入循环。如果没有环,则返回 null

将链表问题转化为数学问题

状态序列与循环

我们可以将链表节点视为状态,每个节点的 next 指针代表状态转移函数 f f f。从头节点开始,我们可以得到一个状态序列:

  • x 0 , x 1 = f ( x 0 ) , x 2 = f ( x 1 ) , x 3 = f ( x 2 ) , … x_0, x_1 = f(x_0), x_2 = f(x_1), x_3 = f(x_2), \ldots x0,x1=f(x0),x2=f(x1),x3=f(x2),

如果链表中存在环,那么这个序列将出现循环

寻找循环起点

我们的目标是找到状态序列中最小的 μ \mu μ,使得对于某个最小的 λ \lambda λ,满足:

  • x μ = x μ + λ x_{\mu} = x_{\mu + \lambda} xμ=xμ+λ

其中:

  • μ \mu μ循环的起始位置(环的入口)
  • λ \lambda λ循环节的长度(环的长度)

Floyd 判圈算法的数学原理

阶段一:检测循环

使用两个指针:

  • 慢指针(slow):每次移动一步
  • 快指针(fast):每次移动两步

阶段二:找到循环的起始位置

数学推导

设:

  • 非环部分长度 a a a
  • 环的长度 b b b
  • 从环入口到相遇点的距离 c c c
  • 快指针在环内绕行的圈数 k k k ( k ≥ 1 k \geq 1 k1)
距离关系
  • 慢指针走的总距离
    D slow = a + c D_{\text{slow}} = a + c Dslow=a+c

  • 快指针走的总距离
    D fast = a + c + k × b D_{\text{fast}} = a + c + k \times b Dfast=a+c+k×b

  • 由于快指针速度是慢指针的两倍:
    D fast = 2 × D slow D_{\text{fast}} = 2 \times D_{\text{slow}} Dfast=2×Dslow

推导步骤
  1. 建立等式
    a + c + k × b = 2 × ( a + c ) a + c + k \times b = 2 \times (a + c) a+c+k×b=2×(a+c)

  2. 化简
    a + c + k × b = 2 a + 2 c a + c + k \times b = 2a + 2c a+c+k×b=2a+2c
    k × b = 2 a + 2 c − a − c k \times b = 2a + 2c - a - c k×b=2a+2cac
    k × b = a + c k \times b = a + c k×b=a+c

  3. 得出关系式
    a + c = k × b a + c = k \times b a+c=k×b

寻找环的入口
  • 快指针走了 a a a 步到达环入口
  • 慢指针从相遇点再走 b − c b - c bc 步也到达环入口

因为:
b − c = b − ( k × b − a ) = − ( k − 1 ) × b + a b - c = b - (k \times b - a) = - (k - 1) \times b + a bc=b(k×ba)=(k1)×b+a

具体例子

假设:

  • 非环部分长度 a = 3 a = 3 a=3
  • 环的长度 b = 4 b = 4 b=4
  • 快指针在环内绕行的圈数 k = 1 k = 1 k=1

根据推导:
a + c = k × b ⟹ c = k × b − a = 1 × 4 − 3 = 1 a + c = k \times b \implies c = k \times b - a = 1 \times 4 - 3 = 1 a+c=k×bc=k×ba=1×43=1

  • 慢指针走的总距离
    D slow = a + c = 3 + 1 = 4 D_{\text{slow}} = a + c = 3 + 1 = 4 Dslow=a+c=3+1=4

  • 快指针走的总距离
    D fast = 2 × D slow = 8 D_{\text{fast}} = 2 \times D_{\text{slow}} = 8 Dfast=2×Dslow=8

验证快指针的距离:
D fast = a + c + k × b = 3 + 1 + 1 × 4 = 8 D_{\text{fast}} = a + c + k \times b = 3 + 1 + 1 \times 4 = 8 Dfast=a+c+k×b=3+1+1×4=8

http://www.mnyf.cn/news/45344.html

相关文章:

  • 可视网站开发工具企业产品网络推广
  • 通辽网站开发seo怎么发布外链
  • 佛山网站设计平台网红推广
  • 网站建设捌金手指专业9营销方案ppt
  • 中卫市住房和城乡建设局网站优化好搜移动端关键词快速排名
  • 公司做网站会计分录北京优化网站公司
  • wordpress去掉边栏百度竞价推广账户优化
  • wordpress文章首行网站seo视频教程
  • 辽阳做网站公司创建app平台
  • 网站建设开票属于哪个名称晋中网站seo
  • 网站备案委托书网络推广方法大全
  • 口子网站怎么做seo排名优化软件免费
  • 阜阳微网站建设多少钱seo标题优化步骤
  • 电商网站建设课程网络服务提供者
  • 做网站分辨率多少钱某网站seo诊断分析
  • 安徽建站优化哪里有镇江交叉口优化
  • 专业做网站公司 前景全球搜钻
  • 免费推广企业网站常用的网络营销方法及效果
  • 重庆网站改版青岛谷歌推广
  • wordpress文章页图片seo推广技巧
  • 怎么用自己的网站做邮箱网络推广图片
  • 网站建设nayuwangseo优化费用
  • 网站开发计入管理费用哪个明细郑州seo技术代理
  • 怎么自己建设一个网站企业微信scrm
  • 网站标题title怎么写互联网舆情信息
  • 网站建设公司哪家好速找盛世传媒打开2345网址大全
  • 在自己网站做blog培训机构咨询
  • 做充气气模产品一般去哪些网站网站服务器地址查询
  • 沧州网站建设报价推销广告
  • 公司网站404石家庄seo代理商