/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var addTwoNumbers = function(l1, l2) {
if(l1.val == 0&&l2.val==0&&l1.next==null&&l2.next==null){
return l1
}
let carry = 0//相加的结果是否大于10,如果大于,则为0,否则为1
let head = null//指向返回新链表的头
let cur = null//指向新链表的尾节点
while(l1||l2){
let num1 = l1?l1.val:0//获取链表上的值,当链表2比链表1长的时候,可设置链表1的高阶为0
let num2 = l2?l2.val:0//同上
const sum = num1+num2+carry
if(head == null){
head = new ListNode(sum%10)
cur = head
}
else{
cur.next = new ListNode(sum%10)
cur = cur.next
}
if(sum>=10){
carry = 1
}
else{
carry = 0
}
if(l1){
l1 = l1.next
}
if(l2){
l2 = l2.next
}
}
if(carry){//检测最后一个carry看是否为1
cur.next = new ListNode(carry)
}
return head
};
链表两数相加
最新推荐文章于 2024-07-18 02:52:10 发布