[Leetcode] 2. 兩數相加 java
阿新 • • 發佈:2018-11-08
給定兩個非空連結串列來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回一個新的連結串列。
你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。
示例:
輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 輸出:7 -> 0 -> 8 原因:342 + 465 = 807
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode sumList=new ListNode(0); ListNode p=l1,q=l2,curr=sumList; int carry=0; while(p!=null||q!=null){ int x=(p!=null)?p.val:0; int y=(q!=null)?q.val:0; int sum=x+y+carry; carry=sum/10; curr.next=new ListNode(sum%10); curr=curr.next; if(p!=null) p=p.next; if(q!=null) q=q.next; } if(carry>0) curr.next=new ListNode(carry); return sumList.next; } }