Here, We see Add Two Numbers problem Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc., with different approaches.

Add Two Numbers LeetCode Solution
Problem Statement ->
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]
Algorithm :

Each node contains a single digit and the digits are stored in reverse order.
Pseudocode :
- Initialize the current node to the dummy head of the returning list.
- Initialize carry to 0.
- Initialize p and q to the head of l1 and l2 respectively.
- Loop through lists l1 and l2 until you reach both ends.
- Set x to the node p‘s value. If pp has reached the end of l1, set to 0.
- Set y to node q‘s value. If q has reached the end of l2, set to 0.
- Set sum = x+y+carry.
- Update carry=sum/10.
- Create a new node with the digit value of (sum mod 10) and set it to the current node’s next, then advance the current node to the next.
- Advance both p and q.
- Check if carry=1, if so append a new node with digit 1 to the returning list.
- Return the dummy head’s next node.
Add Two Numbers Leetcode Solution C++ ->
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
int sum=0;
ListNode *l3=NULL;
ListNode **node=&l3;
while(l1!=NULL||l2!=NULL||sum>0)
{
if(l1!=NULL)
{
sum+=l1->val;
l1=l1->next;
}
if(l2!=NULL)
{
sum+=l2->val;
l2=l2->next;
}
(*node)=new ListNode(sum%10);
sum/=10;
node=&((*node)->next);
}
return l3;
}
};
Code language: C++ (cpp)
Add Two Numbers Leetcode Solution Java->
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummyHead = new ListNode(0);
ListNode p = l1, q = l2, curr = dummyHead;
int carry = 0;
while (p != null || q != null) {
int x = (p != null) ? p.val : 0;
int y = (q != null) ? q.val : 0;
int sum = carry + x + y;
carry = sum / 10;
curr.next = new ListNode(sum % 10);
curr = curr.next;
if (p != null) p = p.next;
if (q != null) q = q.next;
}
if (carry > 0) {
curr.next = new ListNode(carry);
}
return dummyHead.next;
}
Code language: Java (java)
Add Two Numbers Leetcode Solution JavaScript->
var addTwoNumbers = function(l1, l2) {
let node = null
const carry = arguments[2]
if (l1 || l2) {
const val1 = l1 ? l1.val : 0
const val2 = l2 ? l2.val : 0
const next1 = l1 ? l1.next : null
const next2 = l2 ? l2.next : null
const val = carry ? val1 + val2 + 1 : val1 + val2
node = new ListNode(val % 10)
node.next = addTwoNumbers(next1, next2, val >= 10)
} else if (carry) {
node = new ListNode(1)
node.next = null
}
return node
};
Code language: JavaScript (javascript)
Add Two Numbers Leetcode Solution Python->
class Solution(object):
def addTwoNumbers(self, l1, l2):
result = ListNode(0)
result_tail = result
carry = 0
while l1 or l2 or carry:
val1 = (l1.val if l1 else 0)
val2 = (l2.val if l2 else 0)
carry, out = divmod(val1+val2 + carry, 10)
result_tail.next = ListNode(out)
result_tail = result_tail.next
l1 = (l1.next if l1 else None)
l2 = (l2.next if l2 else None)
return result.next
Code language: Python (python)