解题思路


经典的快慢针案例,当快指针走到头的时候,慢指针就会正好在链表中间节点

实现代码


class Solution {
    public ListNode middleNode(ListNode head) {
        ListNode fast = head, slow = head;
        while (fast != null && fast.next != null) {
            fast = fast.next.next;
            slow = slow.next;
        } 
        return slow;
    }

复杂度分析


  • 时间复杂度:O(N)

  • 空间复杂度:O(1)