You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
The number of nodes in each linked list is in the range [1, 100]. 0 <= Node.val <= 9 It is guaranteed that the list represents a number that does not have leading zeros.
Java Solution
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode result = new ListNode(0);
ListNode current = result;
ListNode p1 = l1;
ListNode p2 = l2;
int remainder = 0;
while(p1 != null || p2 != null) {
int firstValue = p1 != null ? p1.val : 0;
int secondValue = p2 != null ? p2.val : 0;
int sum = firstValue + secondValue + remainder;
remainder = sum / 10;
current.next = new ListNode(sum % 10);
current = current.next;
if (p1 != null) p1 = p1.next;
if (p2 != null) p2 = p2.next;
}
if(remainder != 0) current.next = new ListNode(remainder);
return result.next;
}
}