Leetcode time again!
This one actually took me a bit. The problem description states we should sum two non-empty linked lists representing two positive integers stored in reverse order, and return the result as a linked list.
The sum can exceed JS's Max Integer size and that means that adding the numbers requires some type coercion between string and BigInt but it replaces a loop with a simple arithmetic addition so it seemed worth it.
var addTwoNumbers = function(l1, l2) { let num1Str = ''; let num2Str = ''; let node = l1; while (node) { num1Str = node.val + num1Str; node = node.next; } node = l2; while (node) { num2Str = node.val + num2Str; node = node.next; } const sum = BigInt(num1str) + BigInt(num2str); const sumStr = sum.toString(); const resLst = new ListNode(sumStr[sumStr.length - 1]); node = resLst; for (let i = sumStr.length - 2; i >= 0; i--) { node.next = new ListNode(sumStr[i]); node = node.next; } return resLst; };
//Runtime: 96 ms, faster than 99.18% of JavaScript online submissions for Add Two Numbers.
//Memory Usage: 39.2 MB, less than 13.89% of JavaScript online submissions for Add Two Numbers.
Top comments (0)