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 }