每日OJ题 —— 876. 链表的中间结点(链表)
- 1.题目: 876. 链表的中间结点
- 2.方法讲解
- 2.1.解法
- 2.1.1.图文解析
- 2.1.2.代码实现
- 2.1.3.提交结果展示
1.题目: 876. 链表的中间结点
2.方法讲解
2.1.解法
2.1.1.图文解析
题解思路:
考虑借助快慢双指针fast
,slow
,「快指针 fast」每轮走 2 步,「慢指针slow
」每轮走 1 步。fast
的步数恒为slow
的 2 倍,因此当快指针遍历完链表时,慢指针就指向链表中间节点。而由于长度为偶数的链表有两个中间节点,因此需要分两种情况考虑:
链表长度为奇数: 当fast
走到链表「尾节点」时,slow
正好走到「中间节点」。
链表长度为偶数: 当fast
走到「null
」时(越过「尾节点」后),slow
正好走到「第二个中间节点」。
总结以上规律,应在当fast
遇到或越过尾节点 时跳出循环,并返回slow
即可。