File tree Expand file tree Collapse file tree 1 file changed +52
-0
lines changed Expand file tree Collapse file tree 1 file changed +52
-0
lines changed Original file line number Diff line number Diff line change
1
+ class ListNode {
2
+ val : number ;
3
+ next : ListNode | null ;
4
+ constructor ( val ?: number , next ?: ListNode | null ) {
5
+ this . val = val ?? 0 ;
6
+ this . next = next ?? null ;
7
+ }
8
+ }
9
+
10
+ function listNodeToArray ( node : ListNode | null ) : number [ ] {
11
+ const result : number [ ] = [ ] ;
12
+ while ( node ) {
13
+ result . push ( node . val ) ;
14
+ node = node . next ;
15
+ }
16
+ return result ;
17
+ }
18
+
19
+ function arrayToListNode ( arr : number [ ] ) : ListNode | null {
20
+ if ( arr . length === 0 ) return null ;
21
+ const head = new ListNode ( arr [ 0 ] ) ;
22
+ let current = head ;
23
+ for ( let i = 1 ; i < arr . length ; i ++ ) {
24
+ current . next = new ListNode ( arr [ i ] ) ;
25
+ current = current . next ;
26
+ }
27
+ return head ;
28
+ }
29
+
30
+ function addTwoNumbers (
31
+ l1 : ListNode | null ,
32
+ l2 : ListNode | null
33
+ ) : ListNode | null {
34
+ const arr1 = listNodeToArray ( l1 ) ;
35
+ const arr2 = listNodeToArray ( l2 ) ;
36
+
37
+ const result : number [ ] = [ ] ;
38
+ let carry = 0 ;
39
+ let i = 0 ;
40
+
41
+ while ( i < arr1 . length || i < arr2 . length || carry > 0 ) {
42
+ const digit1 = i < arr1 . length ? arr1 [ i ] : 0 ;
43
+ const digit2 = i < arr2 . length ? arr2 [ i ] : 0 ;
44
+
45
+ const sum = digit1 + digit2 + carry ;
46
+ result . push ( sum % 10 ) ;
47
+ carry = Math . floor ( sum / 10 ) ;
48
+ i ++ ;
49
+ }
50
+
51
+ return arrayToListNode ( result ) ;
52
+ }
You can’t perform that action at this time.
0 commit comments