142.环形链表Ⅱ
# 142.环形链表Ⅱ
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。
输入:head = [3,2,0,-4], pos = 1 输出:返回索引为 1 的链表节点 解释:链表中有一个环,其尾部连接到第二个节点。
- 先通过快慢指针判断有无环,得到快慢指针相碰撞的节点后,入环点肯定是在head和fast之间,再通过遍历设置计数器来得出入环点。
- 实际上,得出快慢指针碰撞点之后,由快指针走的路程是慢指针的两倍,那么就有b+c=a+b,即c=a,碰撞点到入环点的距离等于头结点head到入环点的距离,因此设置两个节点分别在那两个位置同步走,相碰的节点就是入环点。

编辑 (opens new window)
上次更新: 2023/12/15, 15:49:57