Leetcode - Linked-list-cycle(i,ii)

本文介绍了一种无额外空间的算法,用于检测链表中是否存在环,并找到环的入口节点。通过设置快慢两个指针,首先判断链表是否有环,再利用数学模型确定环的入口位置。

对于一个给定的链表,返回环的入口节点,如果没有环,返回null

注:需要提供无额外空间的算法。

 

思路:先是判断是否有环。再来获取其入口。

  1. 是否有环

数学上有这么一道题目:有两个人比赛跑步,一个人先跑,那么请问另外一个人怎么样才能追上这个人?

 

解答过程当然是:。然后根据条件得到b的值或者t的值。那么引申到这个题目上来讲:假设a、b同时跑,b跑的快、a跑的慢,怎么样a才可能追上b了?答案当然是400m环型跑道,当我超你一圈的时候,你可以吹牛说你追上了我。那么这样答案就出来了:

设置一快一慢两个指针,一个跑的快a、一个跑的慢b,如果存在一个时候a = b,那么就有环,如果没有,那就没有环。

  1. 入口

那么怎么求入口了,数学上来讲就是:先画个示意图,获取可以发现规律。

 

假设入口之前距离为L,入口为P0、相交点为p、整个环的长度为R、他们在相遇时,其离入口的距离为r。设两个速度为Va和Vb,Va =nVb,设当b到达入口时,a到达P1点,距离入口为x,从b到入口,到p点相遇这段时间内,a走了Na圈,b走了Mb圈,得出下来方程组:

 

即a在t时间内进入了圈 L,又走了Na圈,最后从P1到达P。

b在t时间内进入圈L,又走了Mb圈,最后从P0到P。得出:

 

又由于x和R之间存在关系,设在b未到达入口时,a走了k圈:

 

计算得出式子

到此,目前我掌握的知识推导不下去,那么通过任意取K和n的值即可,但注意要符合实际情况,别n=2,K=10这种假情况。

那么根据很多其他人的解法,此时n=2,K=0,得出r+L=R。那么此时把b放回起点,a不动,取速度都为1,即可同时达到入口。

【事件触发一致性】研究多智能体网络如何通过分布式事件驱动控制实现有限时间内的共识(Matlab代码实现)内容概要:本文围绕多智能体网络中的事件触发一致性问题,研究如何通过分布式事件驱动控制实现有限时间内的共识,并提供了相应的Matlab代码实现方案。文中探讨了事件触发机制在降低通信负担、提升系统效率方面的优势,重点分析了多智能体系统在有限时间收敛的一致性控制策略,涉及系统模型构建、触发条件设计、稳定性与收敛性分析等核心技术环节。此外,文档还展示了该技术在航空航天、电力系统、机器人协同、无人机编队等多个前沿领域的潜在应用,体现了其跨学科的研究价值和工程实用性。; 适合人群:具备一定控制理论基础和Matlab编程能力的研究生、科研人员及从事自动化、智能系统、多智能体协同控制等相关领域的工程技术人员。; 使用场景及目标:①用于理解和实现多智能体系统在有限时间内达成一致的分布式控制方法;②为事件触发控制、分布式优化、协同控制等课题提供算法设计与仿真验证的技术参考;③支撑科研项目开发、学术论文复现及工程原型系统搭建; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,重点关注事件触发条件的设计逻辑与系统收敛性证明之间的关系,同时可延伸至其他应用场景进行二次开发与性能优化。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值