两个 非空 的链表,表示两个非负的整数。 逆序 存储,并且每个节点只能存储 一位 数字。两数相加返回的和也是以链表形式逆序存储的。
var addTwoNumbers = function(l1, l2) {
// 创建临时的链表
let resNode = new ListNode(0);
// 记录好相关的临时链表信息
let res = resNode;
// 记录是否进行进位运算
let flag = 0;
//当l1不为空或l2不为空或不需要进位时
while(l1 || l2 || flag) {
// 记录其相关的值
let val1 = l1?l1.val:0;
let val2 = l2?l2.val:0;
let sum = val1 + val2 + flag;
//判断是否需要进位
flag = sum >= 10 ? 1 : 0;
//链表所存储的元素只能为余数
sum = sum % 10;
//当相关的链表不为空时,则链表一次向下遍历
if(l1) {
l1 = l1.next;
}
if(l2) {
l2 = l2.next;
}
//向临时创建的链表追加元素
resNode.next = new ListNode(sum);
resNode = resNode.next;
}
return res.next;
};