You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (9 -> 9 -> 7) + (4 -> 3 -> 7)
Output: 1 -> 5 -> 3 -> 3
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode result = null;
ListNode tail = null;
int carry = 0;
while(l1 != null || l2 != null){
int a = (l1 != null) ? l1.val : 0;
int b = (l2 != null) ? l2.val : 0;
int sum = (a+b)+carry;
carry = sum/10;
ListNode node = new ListNode(sum%10);
if(result == null){
result = node;
tail = node;
}
else{
tail.next = node;
tail=node;
}
l1 = l1 != null ? l1.next : l1;
l2 = l2 != null ? l2.next : l2;
}
if(carry == 1){
ListNode node = new ListNode(1);
tail.next = node;
}
return result;
}
