LeetCode 分类刷题:876. 链表的中间结点
题目
给你单链表的头结点 head ,请你找出并返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。

解析
用两个指针 slow 与 fast 一起遍历链表。
slow 一次走一步,fast 一次走两步。
当 fast 到达链表的末尾(奇数个节点)或者指向空(偶数个节点)时,slow 必然位于中间(奇数个节点)或中间的第二个节点(偶数个节点)。

答案
var middleNode = function(head) {let slow = head;let fast = head;while (fast && fast.next) {slow = slow.next;fast = fast.next.next;}return slow;
};// 作者:灵茶山艾府
// 链接:https://leetcode.cn/problems/middle-of-the-linked-list/solutions/1999265/mei-xiang-ming-bai-yi-ge-shi-pin-jiang-t-wzwm/
// 来源:力扣(LeetCode)
// 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
复杂度分析
时间复杂度:O(n)
空间复杂度:O(1)
