3、两数相加

本小妞迷上赌 提交于 2020-03-25 05:58:40

题目:

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

 1     function ListNode(val){
 2         this.val=val;
 3         this.next=null;
 4     }
 5 
 6     var addTwoNumbers=function(l1,l2){
 7         let res=new ListNode(-1),
 8             cur=res,
 9             carry=0;
10         while(l1!==null || l2!==null){
11             let num1=l1==null?0:l1.val;
12             let num2=l2==null?0:l2.val;
13 
14             let sum=num1+num2+carry;
15 
16             carry=sum>=10 ? 1:0;
17 
18             cur.next=new ListNode(sum%10);
19             cur=cur.next;
20             l1=l1?l1.next:l1;
21             l2=l2?l2.next:l2;
22         }
23 
24         if(carry===1){
25             cur.next=new ListNode(1);            
26         }
27 
28         return res.next;
29 
30     }
31 
32     function print_result(res){
33         while(res!=null){
34          console.log(res.val);
35          res=res.next;
36         }
37     }
38 
39     var a243=new ListNode(5);
40     a243.next=new ListNode(4);
41     a243.next.next=new ListNode(3)
42 
43     var a564=new ListNode(5);
44     a564.next=new ListNode(6);
45     a564.next.next=new ListNode(4)
46 
47     var result = addTwoNumbers(a243,a564);
48 
49 
50     console.log("初始值:");
51     print_result(a243);
52     console.log('-------------------');
53     print_result(a564);
54 
55     console.log("结果:");
56     print_result(result);

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!