2-addTwoNumbers.js
1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
function ListNode(val) {
this.val = val;
this.next = null;
}
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var addTwoNumbers = function (l1, l2) {
function list2array(list) {
let arr = [];
do {
arr.push(list.val);
list = list.next;
}
while (list);
return arr;
}
function array2list(arr) {
let list = new ListNode(), c = list;
for (let [i, v] of arr.entries()) {
c.val = v;
c.next = i+1 < arr.length?new ListNode():null;
c = c.next;
}
return list;
}
let arr1 = list2array(l1);
let arr2 = list2array(l2);
let len = Math.max(arr1.length, arr2.length);
let rs = [], f = 0;
for (let i = 0; i < len; i++) {
let v1 = arr1.shift()||0;
let v2 = arr2.shift()||0;
let v = v1 + v2 + f;
if (v >= 10) {
rs.push(v - 10);
f = 1;
} else {
rs.push(v);
f = 0;
}
}
if (f > 0) {
rs.push(f);
}
return array2list(rs);
};
console.info(addTwoNumbers({
val: 1,
next: null
}, {
val: 9,
next: { val: 9, next: null }
}));