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; }