Quetion
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.
Example
Input:(2->4->3)+(5->6->4)
Output:7->0->8
Solution
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {val=x;}
* }
*/
public class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode ret=new ListNode(0);
ListNode cur=ret;
int sum = 0;
while (true) {
if (l1!=null) {
sum+=l1.val;
l1=l1.next;
}
if (l2!=null) {
sum+=l2.val;
l2=l2.next;
}
cur.val=sum % 10;
sum /= 10;
if (l1 != null || l2 != null || sum != 0) {
cur=(cur.next=new ListNode(0));
}
else {
break;
}
}
return ret;
}
}