Skip to main content
Back to problems
#876
Easy Algorithms

Middle of the linked list

Linked List Two Pointers
81.6% acceptance
Feb 22, 2026
13149
439
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.

Solution

Rust
Time O(n)
Space O(1)
LeetCode
solution.rs
/*
 * 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:
 * 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
 */

impl Solution {
  pub fn middle_node(head: Option<Box<ListNode>>) -> Option<Box<ListNode>> {
    let mut len = 0;
    let mut cur = &head;
    while let Some(node) = cur { len += 1; cur = &node.next; }
    let mut cur = head;
    for _ in 0..len/2 { cur = cur.unwrap().next; }
    cur
  }
}