#[derive(PartialEq, Eq, Clone, Debug)] struct Solution; pub struct ListNode { pub val: i32, pub next: Option> } impl ListNode { #[inline] fn new(val: i32) -> Self { ListNode { next: None, val } } } impl Solution { pub fn middle_node(head: Option>) -> Option> { let mut curr = &head; let mut node_vec: Vec>> = vec![]; while let Some(node) = curr.as_ref() { node_vec.push(Some(node.clone())); curr = &curr.as_ref().unwrap().next; } node_vec[node_vec.len() / 2].clone() } }