Skip to content

Commit 2b0631a

Browse files
authored
Update 445-add-two-numbers-II.js
1 parent 20c82ef commit 2b0631a

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

445-add-two-numbers-II.js

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,63 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* function ListNode(val, next) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.next = (next===undefined ? null : next)
6+
* }
7+
*/
8+
/**
9+
* @param {ListNode} l1
10+
* @param {ListNode} l2
11+
* @return {ListNode}
12+
*/
13+
const addTwoNumbers = function(head1, head2) {
14+
const r1 = reverse(head1), r2 = reverse(head2)
15+
let l1 = r1, l2 = r2, inc = 0
16+
let dummy = new ListNode()
17+
let pre = dummy
18+
while(l1 || l2) {
19+
let val = inc
20+
if(l1) {
21+
val += l1.val
22+
l1 = l1.next
23+
}
24+
if(l2) {
25+
val += l2.val
26+
l2 = l2.next
27+
}
28+
if(val > 9) inc = 1
29+
else inc = 0
30+
const cur = new ListNode(val % 10)
31+
pre.next = cur
32+
pre = cur
33+
}
34+
if (inc) {
35+
pre.next = new ListNode(1)
36+
}
37+
return reverse(dummy.next)
38+
};
39+
40+
function reverse(head) {
41+
const dummy = new ListNode()
42+
dummy.next = head
43+
let len = 0, cur = head
44+
while(cur) {
45+
len++
46+
cur = cur.next
47+
}
48+
let p = dummy, tail = head, tmp = null
49+
for(let i = 0; i < len - 1; i++) {
50+
tmp = p.next
51+
p.next = tail.next
52+
tail.next = tail.next.next
53+
p.next.next = tmp
54+
}
55+
return dummy.next
56+
}
57+
58+
59+
// another
60+
161
/**
262
* Definition for singly-linked list.
363
* function ListNode(val) {

0 commit comments

Comments
 (0)