/**
* 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 (node1, node2) {
let addedLL = { val: 0, next: null },
carryOver = 0,
dummyHead = addedLL
while (node1 || node2) {
let currSum, currNode
const node1Val = node1 ? node1.val : 0
const node2Val = node2 ? node2.val : 0
currSum = node1Val + node2Val + carryOver
if (currSum < 10) {
currNode = { val: currSum, next: null }
carryOver = 0
} else if (currSum > 9) {
currNode = { val: currSum % 10, next: null }
carryOver = Math.floor(currSum / 10)
}
addedLL.next = currNode
addedLL = addedLL.next
if (node1) {
node1 = node1.next
}
if (node2) {
node2 = node2.next
}
}
if (carryOver > 0) {
addedLL.next = { val: carryOver, next: null }
}
return dummyHead.next
}
node1 = {
val: 2,
next: { val: 4, next: { val: 3, next: { val: 9, next: null } } },
}
node1 = { val: 2, next: { val: 4, next: { val: 3, next: null } } }
node2 = { val: 5, next: { val: 6, next: { val: 4, next: null } } }
// node1 = { val: 9, next: null }
// node2 = { val: 9, next: null }
//Test cases
console.log(JSON.stringify(addTwoNumbers(node1, node2)))