链表中环的入口结点


求解代码

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;
    }
相关推荐
探序基因1 天前
单细胞Seurat数据结构修改分群信息
数据结构
六义义1 天前
java基础十二
java·数据结构·算法
张张努力变强1 天前
C++ 类和对象(四):const成员函数、取地址运算符重载全精讲
开发语言·数据结构·c++·后端
爱跑步的程序员~1 天前
LeetCode 24. 两两交换链表中的节点
算法·leetcode·链表
历程里程碑1 天前
双指针 --- 接雨水
java·数据结构·python·算法·leetcode·职场和发展·tornado
Snow_day.1 天前
【补题记录】AT441,442
数据结构·算法·贪心算法·动态规划·图论
DLGXY1 天前
数据结构——栈(十六)
数据结构
Tim_101 天前
【算法专题训练】38、二分查找算法
数据结构·算法
weixin_461769401 天前
判断是否为素数
数据结构·c++·算法·素数
玉树临风ives1 天前
atcoder ABC442 题解
数据结构·c++·算法