You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.1 KiB
78 lines
1.1 KiB
3 years ago
|
/**
|
||
|
* Definition for singly-linked list.
|
||
|
* function ListNode(val) {
|
||
|
* this.val = val;
|
||
|
* this.next = null;
|
||
|
* }
|
||
|
*/
|
||
|
/**
|
||
|
* @param {ListNode} l1
|
||
|
* @param {ListNode} l2
|
||
|
* @return {ListNode}
|
||
|
*/
|
||
|
var addTwoNumbers = function(l1, l2) {
|
||
|
|
||
|
var carry = 0;
|
||
|
var sum;
|
||
|
var startNode = null;
|
||
|
var prevNode = null;
|
||
|
var node = null;
|
||
|
|
||
|
while(true){
|
||
|
|
||
|
if (l1 !== null){
|
||
|
if (l2 !== null){
|
||
|
sum = l1.val + l2.val + carry;
|
||
|
} else {
|
||
|
sum = l1.val + carry;
|
||
|
}
|
||
|
} else {
|
||
|
if (l2 === null){
|
||
|
break;
|
||
|
} else {
|
||
|
sum = l2.val + carry;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (sum >= 10){
|
||
|
sum = sum - 10;
|
||
|
carry = 1;
|
||
|
} else {
|
||
|
carry = 0;
|
||
|
}
|
||
|
|
||
|
node = {
|
||
|
val: sum,
|
||
|
next: null
|
||
|
}
|
||
|
|
||
|
if (prevNode !== null){
|
||
|
prevNode.next = node;
|
||
|
}
|
||
|
|
||
|
if (startNode === null){
|
||
|
startNode = node;
|
||
|
}
|
||
|
|
||
|
prevNode = node;
|
||
|
if (l1 !== null){
|
||
|
l1 = l1.next;
|
||
|
}
|
||
|
if (l2 !== null){
|
||
|
l2 = l2.next;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
if (carry === 1){
|
||
|
node = {
|
||
|
val: 1,
|
||
|
next: null
|
||
|
}
|
||
|
|
||
|
prevNode.next = node;
|
||
|
}
|
||
|
|
||
|
return startNode;
|
||
|
};
|