876. 链表的中间节点

快慢指针

解题思路

  1. 声明两个快慢指针,slow 一次走一步,fast 一次走两步;

  2. 那么当 fast 到达链表的末尾时,slow 必然位于中间;

复杂度

  1. 时间复杂度:O(N),其中 N 是给定链表的结点数目;

  2. 空间复杂度:O(1)

代码实现

var middleNode = function (head) {
    let fast = head;
    let slow = head;

    // fast 为 null,返回 slow 即可
    while (fast && fast.next) {
        fast = fast.next.next;
        slow = slow.next;
    }

    return slow;
};
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 快慢指针
    1. 1.1. 解题思路
    2. 1.2. 复杂度
    3. 1.3. 代码实现