描述

2487. 从链表中移除节点

给你一个链表的头节点 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,
        }
    }
}

分类

#算法/递归#算法/链表