Skip to content

Commit 3d090ea

Browse files
authored
Merge pull request neetcode-gh#2626 from rmrt1n/02
Create 0002-add-two-numbers.rs
2 parents 794f343 + 36db6a7 commit 3d090ea

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

rust/0002-add-two-numbers.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
impl Solution {
2+
pub fn add_two_numbers(l1: Option<Box<ListNode>>, l2: Option<Box<ListNode>>) -> Option<Box<ListNode>> {
3+
let (mut l1, mut l2) = (l1.as_ref(), l2.as_ref());
4+
let mut dummy = Box::new(ListNode { val: 0, next: None });
5+
let mut cur = dummy.as_mut();
6+
let mut carry = 0;
7+
8+
while l1.is_some() || l2.is_some() || carry > 0 {
9+
let val1 = l1.map(|n| n.val).unwrap_or_default();
10+
let val2 = l2.map(|n| n.val).unwrap_or_default();
11+
12+
let sum = val1 + val2 + carry;
13+
carry = sum / 10;
14+
cur.next = Some(Box::new(ListNode { val: sum % 10, next: None }));
15+
cur = cur.next.as_mut().unwrap();
16+
17+
if let Some(node) = l1 { l1 = node.next.as_ref() }
18+
if let Some(node) = l2 { l2 = node.next.as_ref() }
19+
}
20+
21+
dummy.next
22+
}
23+
}

0 commit comments

Comments
 (0)