JavaScript 两数相加 LeetCode-2

xiaoxiao2021-03-01  15

版权声明:本文为博主原创文章,未经博主允许不得转载

题目:

给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。

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

示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 var addTwoNumbers = function(l1, l2) { var it1=l1,it2=l2; var arr1=[],arr2=[]; while(it1){ arr1.push(it1.val); it1=it1.next } while(it2){ arr2.push(it2.val); it2=it2.next } if(arr1.length<arr2.length){ item=arr2; arr2=arr1; arr1=item; } arr1=arr1.reverse(); arr2=arr2.reverse(); var i=arr1.length-1,j=arr2.length-1; while(i!=-1){ if(j!=-1){ arr1[i]+=arr2[j] if(arr1[i]>9){ arr1[i]-=10; if(i==0){ arr1.splice(0,0,1); } else{ arr1[i-1]+=1; } } j--; i--; } else{ if(arr1[i]>9&&i==0){ arr1[0]-=10 arr1.splice(0,0,1) } else if(arr1[i]>9){ arr1[i]-=10; arr1[i-1]+=1 } i-- } } arr1=arr1.reverse() head = new ListNode(arr1[0]-0); tail=head; for(var i=1;i<arr1.length;i++){ tail.next = new ListNode(arr1[i]-0); tail=tail.next; } return head }

 

转载请注明原文地址: https://www.6miu.com/read-4050132.html

最新回复(0)