LeetCode:链表中间节点

264 阅读1分钟

一、题目描述

二、思路分析

2.1 分析

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

2.2 图解

三、题解

链表中间节点的实现

  • 做法一

  • 做法二:快慢指针