话不多说,我们先上题目
我们首先可以获取到的信息是 这是两个逆序链表、每个节点只能存储一个节点 故相加后会进位;
var addTwoNumbers = function(l1, l2) {
let s = n = new ListNode(); //创建一个新节点 s只有存储功能没有管理功能 n用来管理
let e = new ListNode(0); //进位时创建的节点 赋初值
let a = 0; //存储进位的值
while(l1 || l2) {
//这里用三目运算符 当l的值不等于空的时候将l的值赋给val 否则val等于0
let val1 = l1 !== null ? l1.val : 0;
let val2 = l2 !== null ? l2.val : 0;
//计算和值 包括进位的a
let sum = val1 + val2 + a;
//进位用floor转整数
a = Math.floor(sum / 10);
n.next = new ListNode(sum % 10); //将值赋给节点
n = n.next;
if(l1) l1 = l1.next;
if(l2) l2 = l2.next;
}
if(a) { //做判断 进位的值如果不为0 则需要将a赋给下一个节点
n.next = new ListNode(a);
}
return s.next; //最后返回存储的s链表
}