function ListNode(val, next) {
this.val = val === undefined ? 0 : val;
this.next = next === undefined ? null : next;
}
var addTwoNumbers = function (l1, l2) {
// 进位
let curry = 0;
// 虚拟节点,方便处理结果链表
let dummy = new ListNode();
// 指针,用来遍历
let pointer = dummy;
while (l1 || l2 || curry) {
// 计算当前位的和,考虑链表长度不一致的情况
const sum = (l1 ? l1.val : 0) + (l2 ? l2.val : 0) + curry;
// 更新进位和当前位的值
curry = Math.floor(sum / 10);
// 当前位的值是 sum 对 10 取模
const val = sum % 10;
// 创建新节点并连接到结果链表
pointer.next = new ListNode(val);
// 移动指针
pointer = pointer.next;
// 移动 l1 和 l2 的指针
l1 = l1 ? l1.next : null;
l2 = l2 ? l2.next : null;
}
// 返回结果链表的头节点
return dummy.next;
};
// [2,4,3] + [5,6,4]
const l1 = new ListNode(2, new ListNode(4, new ListNode(3)));
const l2 = new ListNode(5, new ListNode(6, new ListNode(4)));
console.log(addTwoNumbers(l1, l2));