Rust踩雷笔记(5)——刷点链表的题(涉及智能指针Box,持续更新)

目录

      • [leetcode 2 两数相加------模式匹配+单链表+Box](#leetcode 2 两数相加——模式匹配+单链表+Box)

只能说Rust链表题的画风和C++完全不一样,作为新手一时间还不太适应,于是单独为链表、智能指针开一篇,主要记录leetcode相关题型的答案以及注意事项。

leetcode 2 两数相加------模式匹配+单链表+Box

⭐️两个注意点

🍉里面有官方提供的单链表的实现,可以参考下;

🍉遍历链表可以用loop+match模式匹配的方式

rust 复制代码
// Definition for singly-linked list.
#[derive(PartialEq, Eq, Clone, Debug)]
pub struct ListNode {
  pub val: i32,
  pub next: Option<Box<ListNode>>
}

impl ListNode {
  #[inline]
  fn new(val: i32) -> Self {
    ListNode {
      next: None,
      val
    }
  }
}

impl Solution {
    pub fn add_two_numbers(l1: Option<Box<ListNode>>, l2: Option<Box<ListNode>>) -> Option<Box<ListNode>> {
        let mut t = (l1, l2, 0, 0);
        let mut result = None;
        let mut tail = &mut result;
        loop {
            t = match t {
                (None, None, _, 0) => break,
                (Some(l1), Some(l2), _, mut carry) => {
                    let temp = l1.val + l2.val + carry;
                    let res_temp = temp % 10;
                    carry = temp / 10;
                    (l1.next, l2.next, res_temp, carry)
                }
                (Some(l), None, _, mut carry) | (None, Some(l), _, mut carry) => {
                    let temp = l.val + carry;
                    let res_temp = temp % 10;
                    carry = temp / 10;
                    (l.next, None, res_temp, carry)
                }
                (None, None, _, carry) => {
                    (None, None, carry, 0)
                }
            };
            *tail = Some(Box::new(ListNode::new(t.2)));
            tail = &mut tail.as_mut().unwrap().next;
        }
        result
    }
}

🍉#[inline] 是什么?

是Rust 中的一个属性,用于提示编译器尝试对函数进行内联展开优化。 内联展开是一种优化技术,可以将函数调用的地方替换为函数体的内容,减少了函数调用的开销,提高代码的执行速度。 通过在函数定义之前使用 #[inline] 属性,你可以向编译器发出建议,让它在合适的情况下尝试内联展开函数。

相关推荐
一道秘制的小菜34 分钟前
C++第八节课 日期类的补充
linux·开发语言·数据结构·c++·笔记·算法·链表
零星_AagT36 分钟前
VulnHub-Bilu_b0x靶机笔记
笔记·网络安全·代码审计·vulnhub靶机
zhangrelay1 小时前
机器人相关知识的本身和价值
笔记·学习·持续学习
LL.CS2 小时前
TypeScript学习笔记
笔记·学习·typescript
半夏知半秋3 小时前
R语言中的shiny框架
开发语言·笔记·学习·r语言
Bunny_Ben3 小时前
论文《Mixture of Weak & Strong Experts on Graphs》笔记
人工智能·笔记·深度学习·神经网络·机器学习
Deryck_德瑞克3 小时前
IO流笔记
笔记
quokka563 小时前
SpringSecurity -- 入门使用
java·笔记·学习·spring
前端小菜鸟一枚s4 小时前
tauri版本2的系统托盘
rust
Aheyor???5 小时前
SVN泄露 CTFHUB 解题笔记
笔记