Skip to content

Latest commit

 

History

History
 
 

876-MiddleoftheLinkedList

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Middle of the Linked List

#00ff00 Easy

Given the head of a singly linked list, return the middle node of the linked list.

If there are two middle nodes, return the second middle node.

Example 1:

alt text

Input: head = [1,2,3,4,5]
Output: [3,4,5]
Explanation: The middle node of the list is node 3.

Example 2:

alt text

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$

Problem can be found in here!

Solution

# Definition for singly-linked list.
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

Solution: Fast and Slow Pointers

def middleNode(head: Optional[ListNode]) -> Optional[ListNode]:
    fast_pointer = slow_pointer = head

    while fast_pointer and fast_pointer.next:
        fast_pointer = fast_pointer.next.next
        slow_pointer = slow_pointer.next

    return slow_pointer

Time Complexity: $O(n)$, Space Complexity: $O(1)$