016 · Middle of the Linked List

algorithm
Published

May 11, 2026

Problem

给定一个单链表的头节点 head

请返回这个链表的中间节点。

链表中的每个节点包含两个部分:

  • val:当前节点的值
  • next:指向下一个节点的指针

如果链表中有两个中间节点,需要返回第二个中间节点。

例如:

1 -> 2 -> 3 -> 4 -> 5 -> None

中间节点是 3,所以返回从节点 3 开始的后半段链表:

3 -> 4 -> 5 -> None

再例如:

1 -> 2 -> 3 -> 4 -> 5 -> 6 -> None

中间节点有两个:34。题目要求返回第二个中间节点,所以返回从节点 4 开始的后半段链表:

4 -> 5 -> 6 -> None

Examples

示例 1

Input:  head = [1,2,3,4,5]
Output: [3,4,5]

解释:链表的中间节点是值为 3 的节点。

示例 2

Input:  head = [1,2,3,4,5,6]
Output: [4,5,6]

解释:链表有两个中间节点,值分别为 34,需要返回第二个中间节点。

Constraints

  • 链表中节点的数量范围是 \([1, 100]\)
  • \(1 \leq\) Node.val \(\leq 100\)