You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将有序链表去重的C++解法转换为Rust实现(自定义链表)

Rust 实现删除排序链表中的重复元素

首先定义链表节点结构:

#[derive(PartialEq, Eq, Clone, Debug)]
struct Node {
    val: i32,
    next: Option<Box<Node>>,
}

对应的解法实现:

struct Solution;

impl Solution {
    fn delete_duplicates(mut head: Option<Box<Node>>) -> Option<Box<Node>> {
        let mut current = head.as_mut();
        
        while let Some(node) = current {
            // 检查当前节点的下一个节点是否存在且值重复
            if let Some(next_node) = &mut node.next {
                if next_node.val == node.val {
                    // 移除重复节点:将当前节点的next替换为下下个节点
                    node.next = next_node.next.take();
                    // 不移动current,继续检查新的next节点
                    continue;
                }
            }
            // 无重复,移动current到下一个节点
            current = node.next.as_mut();
        }
        
        head
    }
}

关键细节说明

  • 使用as_mut()获取可变引用,允许修改链表节点的next字段
  • while let Some(node) = current循环遍历链表,直到current变为None
  • 发现重复节点时,调用take()获取下下个节点的所有权,赋值给当前节点的next,原重复节点会被Rust自动回收
  • 无重复时,将current移动到下一个节点的可变引用

内容的提问来源于stack exchange,提问作者William Andrés Rodríguez Borja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 03:45:36