

sum % 10,新的进位写成 Math.floor(sum / 10)。循环条件必须覆盖三种情况:l1 还没走完、l2 还没走完,或者最后还有 carry。function addTwoNumbers(l1, l2) {
const dummy = new ListNode(0);
let tail = dummy;
let carry = 0;
let p = l1;
let q = l2;
while (p !== null || q !== null || carry !== 0) {
const x = p ? p.val : 0;
const y = q ? q.val : 0;
const sum = x + y + carry;
const digit = sum % 10;
carry = Math.floor(sum / 10);
tail.next = new ListNode(digit);
tail = tail.next;
if (p) p = p.next;
if (q) q = q.next;
}
return dummy.next;
}m 和 n,时间复杂度是 O(m + n);结果链表最多比输入最长链表多一个进位节点,因此额外空间是 O(m + n)。This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.