#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)
/*
* 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
}
}