Skip to content

Commit 0736a26

Browse files
committed
0002
1 parent 0a09c95 commit 0736a26

File tree

2 files changed

+52
-13
lines changed

2 files changed

+52
-13
lines changed

Algorithms/0002.add_two_numbers/add_two_numbers.rs

Lines changed: 51 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,68 @@
1-
2-
use std::collections::LinkedList;
1+
use super::list_node::ListNode;
32
use std::cmp;
43

54
impl Solution {
65
pub fn add_two_numbers(l1: Option<Box<ListNode>>, l2: Option<Box<ListNode>>) -> Option<Box<ListNode>> {
7-
let mut results: ListNode::new(0);
6+
let mut results: Option<Box<ListNode>>;
87
let mut i1 = l1;
98
let mut i2 = l2;
10-
11-
let mut overfalow_value: i32 = 0;
9+
let mut overflow_value = 0;
1210

1311
while i1.is_some() || i2.is_some() {
14-
let mut v1 = i1.unwrap_or(0);
15-
let mut v2 = i2.unwrap_or(0);
12+
let v1 = i1.unwrap_or( Box::new(ListNode::new(0)) );
13+
let v2 = i2.unwrap_or( Box::new(ListNode::new(0)) );
1614

17-
let mut v = v1 + v2 + overflow_value;
15+
let mut v = v1.val + v2.val + overflow_value;
1816
overflow_value = v / 10;
1917
v = v % 10;
2018

21-
results.next.push_back(Some(Box::new(ListNode::new(v))));
19+
results.next.get_or_insert(Box::new(ListNode::new(v)));
20+
curr = &mut results.next;
2221

23-
i1 = iter1.next;
24-
i2 = iter2.next;
22+
i1 = v1.next;
23+
i2 = v2.next;
24+
println!( "{:?}", v);
2525
}
26-
return results;
26+
27+
28+
29+
// println!( "{:?}", i1.val);
30+
31+
32+
// let i2 = i1.next.unwrap_or( Box::new(ListNode::new(0)));
33+
34+
// println!( "{:?}", i2.val);
35+
36+
// let i3 = i2.next.unwrap_or( Box::new(ListNode::new(0)));
37+
38+
// println!( "{:?}", i3.val);
39+
40+
// let i4 = i3.next.unwrap_or( Box::new(ListNode::new(0)));
41+
42+
// println!( "{:?}", i4.val);
43+
44+
// let mut results: Some;
45+
// let mut i1 = l1;
46+
// let mut i2 = l2;
47+
48+
// let mut overfalow_value: i32 = 0;
49+
50+
// while i1.is_some() || i2.is_some() {
51+
// let mut v1 = i1.unwrap_or(0);
52+
// let mut v2 = i2.unwrap_or(0);
53+
54+
// let mut v = v1 + v2 + overflow_value;
55+
// overflow_value = v / 10;
56+
// v = v % 10;
57+
58+
// results.next.push_back(Some(Box::new(ListNode::new(v))));
59+
60+
// i1 = iter1.next;
61+
// i2 = iter2.next;
62+
// }
63+
// return results;
64+
65+
return None;
2766
}
2867
}
2968

Algorithms/0002.add_two_numbers/ListNode.rs renamed to Algorithms/0002.add_two_numbers/list_node.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ pub struct ListNode {
77

88
impl ListNode {
99
#[inline]
10-
fn new(val: i32) -> Self {
10+
pub fn new(val: i32) -> Self {
1111
ListNode {
1212
next: None,
1313
val

0 commit comments

Comments
 (0)