SOURCE

/**
 * 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) {
    let r1 = linkReverse(l1), r2 = linkReverse(l2);
    //相加 头插法
    let sum = null;
    let carry = 0;
    let p = r1, q = r2;
    while (p || q || carry != 0) {
        let a = p == null ? 0 : p.val;
        let b = q == null ? 0 : q.val;
        let curr = a + b + carry;
        carry = curr / 10;
        curr = curr % 10;
        let curnode = new ListNode(curr);
        curnode.next = sum;
        sum = curnode;
        if (p)p = p.next;
        if (q)q = q.next;
    }
    return sum;
};

//链表反转 头插法
var linkReverse = (link) => {
    let res = null;
    let p = link;
    while (p) {
        let temp = p.next;
        p.next = res;
        res = p;
        p = temp;
    }
    return res;
}
console 命令行工具 X clear

                    
>
console