Rust每日一题(11)---数据结构-链表--middle-of-the-linked-list
leetcode地址 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2]
输出:[2,1]
示例 3:
输入:head = []
输出:[]
难度: 简单
核心还是分析关键操作步骤,有两种思路:
impl Solution {
pub fn middle_node(head: Option<Box<ListNode>>) -> Option<Box<ListNode>>{
let mut curr = head.as_ref();
let mut count = 0;
while let Some(mut temp) = curr.take() {
curr = temp.next.as_ref();
count += 1;
}
count = count /2 ;
let mut res = head;
while count > 0 {
res = res.and_then(|x|{x.next});
count -= 1;
}
res
}
}
impl Solution {
pub fn middle_node(head: Option<Box<ListNode>>) -> Option<Box<ListNode>>{
let mut curr = head.as_ref();
let mut res = head.clone();
while curr.is_some() && curr.unwrap().next.is_some() {
curr = curr.unwrap().next.as_ref().unwrap().next.as_ref();
res = res.take().and_then(|x|{x.next});
}
res
}
}
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!