题目链接
英文链接:https://leetcode.com/problems/middle-of-the-linked-list/
中文链接:https://leetcode-cn.com/problems/middle-of-the-linked-list/
题目详述
给定一个带有头结点 head
的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
示例 1:
1 | 输入:[1,2,3,4,5] |
示例 2:
1 | 输入:[1,2,3,4,5,6] |
提示:
- 给定链表的结点数介于
1
和100
之间。
题目详解
运用快慢指针。
- 快指针和慢指针初始化指向头结点。
- 快指针每次走两步,慢指针每次走一步。
- 当快指针不能前进,跳出循环时,按链表长度的奇偶性分为两种情况。
- 链表长度为奇数,此时快指针指向链表末尾结点,慢指针指向中间结点。
- 链表长度为偶数,此时快指针指向 null,慢指针指向下中位数结点(第二个中间结点)。
- 易知最后慢指针就是我们想要的结果,直接返回即可。
1 | public class LeetCode_00876 { |