算法训练-链表

链表

链表注意事项

1.使用无参构造创建链表的时候,会生成一个头节点,如果存在int值,默认赋值为0
2.** 删除,增加等处理操作时,头节点单独处理!!!**

判断是否有环

使用快慢指针,快指针速度为2,慢指针速度为1,则两指针一定会相遇(当快慢指针速度相差1时,都可以相遇,每走一步,两只指针之间的距离少1
判断快慢指针是否相遇,即可判断是否有环
判断是否有环,并且返回环的位置
先判断是否有环,再返回位置

方法二:判断哈希值

判断位置

假设 环之前长度为a,环长度为b,快指针走了f,满指针走了s,则
f = 2s
f = s + nb(快指针比慢指针多走了n圈)
f = 2nb
s = nb
当满指针走了 a+nb的时候,会直接返回环的入口,因此将快指针返回头节点,速度改为1,此时满指针在nb,当其再次相遇时满指针走了 a+nb,快指针走了a步,因此为环入口
不断判断null值,否则会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值