File tree Expand file tree Collapse file tree 1 file changed +23
-0
lines changed
Expand file tree Collapse file tree 1 file changed +23
-0
lines changed Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments