题目描述: alt 解题思路:

先翻转两个链表,再进行末尾相加

alt

解题代码:

function ReverseList(pHead) {
    let res = null;
    let cur = pHead;
    while(cur){
        let temp = cur.next;
        cur.next = res;
        res = cur;
        cur = temp;
    }
    return res;
}
function addInList( head1 ,  head2 ) {
    // write code here
    let l1 = ReverseList(head1); // 翻转链表1
    let l2 = ReverseList(head2); // 翻转链表2
    let res = null; // 来返回最终的结果
    let cnt = 0;
    while(l1 || l2) {
        let x1 = l1===null ? 0 : l1.val;
        let x2 = l2===null ? 0 : l2.val;
        let sum = x1 + x2 + cnt; //本位总和
        cnt = Math.floor(sum / 10); // 查看是否有进位
        // 进行节点插入
        let newNode = new ListNode(sum % 10);
        newNode.next = res;
        res = newNode;
        //链表的移动
        l1 = l1==null ? null : l1.next;
        l2 = l2==null ? null : l2.next;
    }
    // 若cnt>0则存在进位,得插入一个节点
    if(cnt) {
        let newNode = new ListNode(cnt);
        newNode.next = res;
        res = newNode;
    }
    return res;
    
}