链表中环的入口结点


求解代码

java 复制代码
public ListNode EntryNodeOfLoop(ListNode pHead) {
        // 快慢指针都从链表头出发
        ListNode fast = pHead;
        ListNode slow = pHead;


        while (fast != null && fast.next != null) {
            fast = fast.next.next; // 快指针走2步
            slow = slow.next;      // 慢指针走1步

            // 快慢指针相遇 → 证明链表有环,进入找入口逻辑
            if (slow == fast) {
                // 找环的入口
                while (pHead != slow) {
                    pHead = pHead.next; // 头指针走1步
                    slow = slow.next; // 相遇点指针走1步
                }
                return slow; // 相遇时就是环的入口
            }
        }
				// 无环,返回null
        return null;
    }
相关推荐
学逆向的8 小时前
C 循环结构的执行效率分析
c语言·开发语言·数据结构·网络安全
jeo陽12 小时前
04-循环实战:素数、最大公约数、级数求和与枚举法
c语言·开发语言·数据结构
slandarer13 小时前
MATLAB | 趣味编程——动态字符串甜甜圈和爱心
数据结构·matlab·趣味编程
UIU11414 小时前
P1003 [NOIP 2011 提高组] 铺地毯
数据结构·c++·算法
爱读书的小胖14 小时前
LeetCode 88. 合并两个有序数组 C 解题分析
c语言·数据结构·算法
inrichtt14 小时前
第七课时:STM32时钟系统揭秘:从零理解时钟树
c语言·数据结构·stm32·单片机·嵌入式硬件
xxwl58515 小时前
区域赛算法模版第四章---数据结构
数据结构·c++·算法
Logic10117 小时前
C语言/数据结构二维数组题解:找出行列O个数均为偶数的格子——奇偶性预处理+二次遍历
c语言·数据结构·算法·二维数组·时间复杂度·动态内存分配·奇偶性
垆边人似月.18 小时前
移动长度 k 子串使字符串变成回文
数据结构·算法
David猪大卫18 小时前
【C++修炼】string类:string类的模拟实现
c语言·开发语言·数据结构·c++·经验分享·笔记·学习