一、题目描述
二、思路分析
2.1 分析
- 第一种做法就是把链表遍历一遍,统计出节点个数。算出中间节点的位置,然后再从头节点遍历一次链表到中间位置,返回中间节点。
- 第二种做法运用了快慢指针思想。定义一个慢指针 slow 和快指针 fast 同时指向链表头节点 head,慢指针一次走一步,快指针一次走两步。当快指针走到链表末尾时,慢指针刚好走到链表的中间位置。例如:链表 head[1, 2, 3, 4], 当 fast 走过头了,即 4->next 的位置时,慢指针 slow 恰好指向 3 位置。
2.2 图解
三、题解
链表中间节点的实现
-
做法一
-
做法二:快慢指针