一、题目描述
给定一个头结点为 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
二、实例
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030161957326.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5ODk3OTc4,size_16,color_FFFFFF,t_70#pic_center)
三、思路
(1)借助外部的数组来得到n/2的值
(2)遍历两次链表,第一次等到长度 n,第二次返回到n/2
(3)快慢指针
四、代码
var middleNode = function(head) {
slow = fast = head;
while (fast && fast.next) {
slow = slow.next;
fast = fast.next.next;
}
return slow;
};
五、结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030162240169.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5ODk3OTc4,size_16,color_FFFFFF,t_70#pic_center)