Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 0625393

Browse files
committed
feat: add rust solution to lc problem: No.0002
No.0002.Add Two Numbers
1 parent c6533ae commit 0625393

File tree

3 files changed

+130
-0
lines changed

3 files changed

+130
-0
lines changed

‎solution/0000-0099/0002.Add Two Numbers/README.md‎

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,51 @@ proc addTwoNumbers(l1: var SinglyLinkedList, l2: var SinglyLinkedList): SinglyLi
339339
result = aggregate
340340
```
341341

342+
### **Rust**
343+
344+
```rust
345+
// Definition for singly-linked list.
346+
// #[derive(PartialEq, Eq, Clone, Debug)]
347+
// pub struct ListNode {
348+
// pub val: i32,
349+
// pub next: Option<Box<ListNode>>
350+
// }
351+
//
352+
// impl ListNode {
353+
// #[inline]
354+
// fn new(val: i32) -> Self {
355+
// ListNode {
356+
// next: None,
357+
// val
358+
// }
359+
// }
360+
// }
361+
impl Solution {
362+
pub fn add_two_numbers(
363+
mut l1: Option<Box<ListNode>>,
364+
mut l2: Option<Box<ListNode>>,
365+
) -> Option<Box<ListNode>> {
366+
let mut dummy = Some(Box::new(ListNode::new(0)));
367+
let mut cur = &mut dummy;
368+
let mut sum = 0;
369+
while l1.is_some() || l2.is_some() || sum != 0 {
370+
if let Some(node) = l1 {
371+
sum += node.val;
372+
l1 = node.next;
373+
}
374+
if let Some(node) = l2 {
375+
sum += node.val;
376+
l2 = node.next;
377+
}
378+
cur.as_mut().unwrap().next = Some(Box::new(ListNode::new(sum % 10)));
379+
cur = &mut cur.as_mut().unwrap().next;
380+
sum /= 10;
381+
}
382+
dummy.unwrap().next.take()
383+
}
384+
}
385+
```
386+
342387
### **...**
343388

344389
```

‎solution/0000-0099/0002.Add Two Numbers/README_EN.md‎

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,51 @@ proc addTwoNumbers(l1: var SinglyLinkedList, l2: var SinglyLinkedList): SinglyLi
327327
result = aggregate
328328
```
329329

330+
### **Rust**
331+
332+
```rust
333+
// Definition for singly-linked list.
334+
// #[derive(PartialEq, Eq, Clone, Debug)]
335+
// pub struct ListNode {
336+
// pub val: i32,
337+
// pub next: Option<Box<ListNode>>
338+
// }
339+
//
340+
// impl ListNode {
341+
// #[inline]
342+
// fn new(val: i32) -> Self {
343+
// ListNode {
344+
// next: None,
345+
// val
346+
// }
347+
// }
348+
// }
349+
impl Solution {
350+
pub fn add_two_numbers(
351+
mut l1: Option<Box<ListNode>>,
352+
mut l2: Option<Box<ListNode>>,
353+
) -> Option<Box<ListNode>> {
354+
let mut dummy = Some(Box::new(ListNode::new(0)));
355+
let mut cur = &mut dummy;
356+
let mut sum = 0;
357+
while l1.is_some() || l2.is_some() || sum != 0 {
358+
if let Some(node) = l1 {
359+
sum += node.val;
360+
l1 = node.next;
361+
}
362+
if let Some(node) = l2 {
363+
sum += node.val;
364+
l2 = node.next;
365+
}
366+
cur.as_mut().unwrap().next = Some(Box::new(ListNode::new(sum % 10)));
367+
cur = &mut cur.as_mut().unwrap().next;
368+
sum /= 10;
369+
}
370+
dummy.unwrap().next.take()
371+
}
372+
}
373+
```
374+
330375
### **...**
331376

332377
```
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// Definition for singly-linked list.
2+
// #[derive(PartialEq, Eq, Clone, Debug)]
3+
// pub struct ListNode {
4+
// pub val: i32,
5+
// pub next: Option<Box<ListNode>>
6+
// }
7+
//
8+
// impl ListNode {
9+
// #[inline]
10+
// fn new(val: i32) -> Self {
11+
// ListNode {
12+
// next: None,
13+
// val
14+
// }
15+
// }
16+
// }
17+
impl Solution {
18+
pub fn add_two_numbers(
19+
mut l1: Option<Box<ListNode>>,
20+
mut l2: Option<Box<ListNode>>,
21+
) -> Option<Box<ListNode>> {
22+
let mut dummy = Some(Box::new(ListNode::new(0)));
23+
let mut cur = &mut dummy;
24+
let mut sum = 0;
25+
while l1.is_some() || l2.is_some() || sum != 0 {
26+
if let Some(node) = l1 {
27+
sum += node.val;
28+
l1 = node.next;
29+
}
30+
if let Some(node) = l2 {
31+
sum += node.val;
32+
l2 = node.next;
33+
}
34+
cur.as_mut().unwrap().next = Some(Box::new(ListNode::new(sum % 10)));
35+
cur = &mut cur.as_mut().unwrap().next;
36+
sum /= 10;
37+
}
38+
dummy.unwrap().next.take()
39+
}
40+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /