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: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Finally meet an easy one to end my day.
Be careful, if input was {5},{5}, output should be {0,1}
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
if(l1 == null && l2 == null){
return null;
}
return res(l1,l2,0);
}
private ListNode res(ListNode n1, ListNode n2, int carry){
int sum = 0;
ListNode p = null;
ListNode q = null;
;
if (n1==null && n2==null){
return null;
}
if(n1!=null){
sum = sum +n1.val;
p= n1.next;
}
if(n2!=null){
sum = sum+n2.val;
q = n2.next;
}
sum = sum + carry;
carry = sum/10;
ListNode n = new ListNode(sum%10);
n.next = res(p,q,carry);
if(carry == 1 && p == null && q==null){
n.next = new ListNode(1);
}
return n;
}
}