判断链表是否有环和环的大小及环的入口

1.判断链表是否有环

双指针法:定义两个指针,一个步长是2一个步长是1,当两个指针相遇时链表有环

2.计算链表环大小

设A的步长是1,B的步长是2。假设AB相遇A走了X步,那么B就走了2X步。假设是第一次相遇,则B多走的路就是环的大小。即X。

3.计算环的入口

设环的大小为x,交点到开始的距离为t,交点到入口距离为c(图中下面线段表示的距离),开始到入口距离为a(上图上面线段表示的距离),总长为u。图中环下面的点表示双指针交点位置。

则有 x(环大小)+a=u、t+c=u。因x=t得a=c。

定义两个指针,一个从头跑,另一个从交点跑,两个相遇的点就是入口。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值