结果
题目要求
js代码
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;
};
解题思路
- 将两个链表重头开始遍历,只要有一个不为空,就继续遍历。
- 每一次遍历,不为空则继续取值,为空赋值为0,使用carry变量保存和大于等于10的进位(>=10,carry1)
- 将每次的和保存在一个新的有头链表中,
- 若最后carry为1则输出前在新链表中的尾部加上一个节点,值为1
- 否则直接输出链表
如果对你有帮助,记得点个赞哦