自己写的很丑通过了。丑的原因是主要下面两块没想到,可以记下来用于链表的初始化和迭代
let head = null, tail = null;
if (!head) {
head = tail = new ListNode(sum % 10);
} else {
tail.next = new ListNode(sum % 10);
tail = tail.next;
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;
};
自己写的以下
var addTwoNumbers = function(l1, l2) {
let res = new ListNode()
res.next = new ListNode()
let node = res.next
let count = 0
let a
let b
while(l1||l2||count){
node.next = new ListNode()
node = node.next
if(l1==null){
a=0
}else{
a = l1.val
l1= l1.next
}
if(l2==null){
b=0
}
else{
b = l2.val
l2 = l2.next
}
let sum = a+b+count
if (sum>=10){
count=1
}
else{
count = 0
}
let temp = (sum)%10
node.val = temp
}
return res.next.next
};