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.
Example 1:
Input: l1 = [2,4,3], l2 = [5,6,4]
Output: [7,0,8]
Explanation: 342 + 465 = 807.
Example 2:
Input: l1 = [0], l2 = [0]
Output: [0]
Example 3:
Input: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
Output: [8,9,9,9,0,0,0,1]
**
* 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 result1=reverse1(l1);
ListNode result2=reverse2(l1);
int sum1=0;
while(result1.next!=null)
{
sum1=(sum1*10)+result1.val;
result1=result1.next;
}
int sum2=0;
while(result2.next!=null)
{
sum2=(sum2*10)+result2.val;
result2=result2.next;
}
int totalsum=sum1+sum2;
ListNode dummy = new ListNode(0);
ListNode temp = dummy;
while(totalsum>0)
{
int rem=totalsum%10;
temp.next.val=rem; // here error is shown
temp=temp.next;
totalsum=totalsum/10;
}
return dummy.next;
}
ListNode reverse1(ListNode head)
{
ListNode curr1=head;
ListNode prev1=null;
while(curr1!=null)
{
ListNode temp=curr1.next;
curr1.next=prev1;
prev1=curr1;
curr1=temp;
}
return prev1;
}
ListNode reverse2(ListNode head2)
{
ListNode curr2=head2;
ListNode prev2=null;
while(curr2!=null)
{
ListNode temp=curr2.next;
curr2.next=prev2;
prev2=curr2;
curr2=temp;
}
return prev2;
}
}