1 public class Solution { 2 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { 3 if(l1 == null) 4 return l2; 5 if(l2 == null) 6 return l1; 7 ListNode fakehead = new ListNode(0); 8 ListNode pre = fakehead; 9 int carry = 0; 10 ListNode runner1 = l1; 11 ListNode runner2 = l2; 12 while(runner1 != null && runner2 != null){ 13 int tmp = runner1.val + runner2.val + carry; 14 carry = tmp / 10; 15 ListNode newnode = new ListNode(tmp%10); 16 pre.next = newnode; 17 pre = newnode; 18 runner1 = runner1.next; 19 runner2 = runner2.next; 20 } 21 while(runner1 != null ){ 22 int tmp = runner1.val + carry; 23 carry = tmp / 10; 24 ListNode newnode = new ListNode(tmp%10); 25 pre.next = newnode; 26 pre = newnode; 27 runner1 = runner1.next; 28 } 29 while(runner2 != null){ 30 int tmp = runner2.val + carry; 31 carry = tmp / 10; 32 ListNode newnode = new ListNode(tmp%10); 33 pre.next = newnode; 34 pre = newnode; 35 runner2 = runner2.next; 36 } 37 if(carry == 1){ 38 ListNode newnode = new ListNode(carry); 39 pre.next = newnode; 40 } 41 return fakehead.next; 42 43 } 44 }