当前位置 : 主页 > 编程语言 > 其它开发 >

两数相加(链表)

来源:互联网 收集:自由互联 发布时间:2022-05-30
一、题目 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字(0-9)。 请你将两个数相加,并以相同形式返回一个表示
一、题目

给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字(0-9)。

请你将两个数相加,并以相同形式返回一个表示和的链表。

二、思路

1.生成一个虚拟dummy头节点

2.链表中节点的值:sum%10

3.进位标志flag:sum/10

三、程序实现
var addTwoNumbers = function(l1, l2) {
let flag=0  //标志位
let dummy=new ListNode();//创建一个虚拟头节点
//遍历指针
let curr=dummy
//循环遍历
while(l1!==null || l2!==null){
    let sum=0;
    let a=0,b=0
    if(l1!==null){
        a=l1.val;  //记录l1当前节点的值
        l1=l1.next;
    }
    if(l2!==null){
        b=l2.val  //记录l2当前节点的值
        l2=l2.next  
    }
    sum=a+b+flag;  //计算两数之和
    curr.next=new ListNode(sum%10); //直接创建节点然后赋值
    flag=Math.floor(sum/10);
    //指针进1
    curr=curr.next
}
//如果最后的节点元素相加还需要进位,生成一个新节点且值为flag
if(flag>0){
    curr.next=new ListNode(flag);
}
return dummy.next
};
上一篇:永恒之蓝漏洞原理及复现
下一篇:没有了
网友评论