这一道题还是很有迷惑性的,其实我们只要遍历两个节点的值相加,然后如果大于等于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;
};