问题:
给定两个非空的链表,表示两个非负整数。数字以相反的顺序存储,每个节点包含一个数字。添加两个数字并将其作为链表返回。
您可以假设两个数字不包含任何前导零,除了数字0本身。
输入:(2 - > 4 - > 3)+(5 - > 6 - > 4)
输出: 7 - > 0 - > 8
代码:
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { val = x; } 7 * } 8 */ 9 class Solution { 10 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { 11 12 ListNode p=l1; 13 ListNode q=l2; 14 ListNode l=new ListNode(0); 15 ListNode curr=l; 16 17 int carry=0; 18 19 while(p!=null||q!=null){ 20 21 int x=(p!=null)?p.val:0; 22 int y=(q!=null)?q.val:0; 23 24 int z=carry+x+y; 25 26 carry=z/10; 27 curr.next=new ListNode(z%10); 28 curr=curr.next; 29 30 if(p!=null){ 31 32 p=p.next; 33 34 } 35 36 if(q!=null){ 37 38 q=q.next; 39 40 } 41 42 } 43 44 if(carry>0){ 45 46 curr.next=new ListNode(carry); 47 48 } 49 50 return l.next; 51 52 } 53 }