描述
给你一个链表的头节点 head
。
移除每个右侧有一个更大数值的节点。
返回修改后链表的头节点 head
。
思路
主要是学习一下 Rust 中关于链表题目的一个处理,真的是离了IDE 就别想自己写了
代码
impl Solution {
pub fn remove_nodes(head: Option<Box<ListNode>>) -> Option<Box<ListNode>> {
match head {
Some(mut boxed_head) => {
if let Some(mut next_node) = boxed_head.next.take() {
let node = Self::remove_nodes(Some(next_node));
if boxed_head.val < node.as_ref().unwrap().val {
node
} else {
boxed_head.next = node;
Some(boxed_head)
}
} else {
Some(boxed_head)
}
}
None => None,
}
}
}