--- title: '876. Middle of the Linked List' description: Given the head of a singly linked list, return the middle node of the linked list icon: dot topics: - { name: "Linked List", slug: "linked-list" } - { name: "Two Pointers", slug: "two-pointers" } issue: "https://github.com/prdlk/leetcode/issues/82" sidebar: label: 'Middle of the Linked List' badge: 'Easy' --- ### Example 1: - Input: `head = [1,2,3,4,5]` - Output: `[3,4,5]` - Explanation: The middle node of the list is node `3`. ### Example 2: - Input: `head = [1,2,3,4,5,6]` - Output: `[4,5,6]` - Explanation: Since the list has two middle nodes with values `3` and `4`, we return the second one. ### Constraints: - The number of nodes in the list is in the range [1, 100]. - `1 <= Node.val <= 100` ## Solution ```py # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def middleNode(self, head: ListNode | None) -> ListNode | None: slow = fast = head while fast and fast.next: fast = fast.next.next slow = slow.next return slow ```