题目
给你单链表的头结点 head ,请你找出并返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
思路:
暴力可以过
使用双指针更优雅
慢指针走一步, 快指针走两步
while循环条件是 快指针和快指针的下一个节点不能是null
当循环结束时, fast就指向null
这时slow必指向链表的中间节点
代码:
var middleNode = function (head) {
//快慢指针
//满指针走一步,快指针走两步
let slow = head;
let fast = head;
while (fast !== null && fast.next !== null) {
slow = slow.next;
fast = fast.next.next;
}
return slow;
};