判断一个链表中是否有环,并且得到环的入口位置

来源:互联网 发布:ubuntu怎么解压缩zip 编辑:程序博客网 时间:2024/06/14 17:10

1. 利用快慢指针,判断是否有环,如果没有则退出,否则步骤2

2. 还是利用快慢指针获取环的大小(这之前都讨论过怎么获取了)

3. 把链表倒置, 并且记录倒置需要处理的倒置的次数

   e.g:原始

   倒置之后为:


    总共处理的次数为(倒置完成需要的步骤数): 非环部分的长度*2+环的长度
    已知环的长度,那么非环部分的长度也就知道了
    也就能求出节点的环的入口的位置了
 4. 再次把环倒置,恢复环