题目

这一道题还是很有迷惑性的,其实我们只要遍历两个节点的值相加,然后如果大于等于10则进一位加到下一个节点。要注意的点是最后可能会有余数,别忘记在连接上去。

var addTwoNumbers = function(l1, l2) {
    let head=null,tail=null;
    let carry=0;
    while(l1||l2){
        const n1=l1?l1.val:0;
        const n2=l2?l2.val:0;
        const sum=n1+n2+carry;
        if(!head){
            head=tail=new ListNode(sum%10);
        }else{
            tail.next=new ListNode(sum%10);
            tail=tail.next;
        }
        carry=Math.floor(sum/10);
        if(l1){
            l1=l1.next;
        }
        if(l2){
            l2=l2.next;
        }
    }
    if(carry>0){
        tail.next=new ListNode(carry);
    }
    return head;
};