# Add Two Numbers Leetcode Solution

#### ByBrokenprogrammers

Nov 29, 2022

In this post, you will know how to solve the Add Two Numbers Leetcode Solution problem of Leetcode. This Leetcode problem is done in many programming languages like C++, Java, and Python.

One more thing to add, don’t directly look for the solutions, first try to solve the problems of Leetcode by yourself. If you find any difficulty after trying several times, then you can look for solutions.

## Problem

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]

#### Constraints

• 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

### Add Two Numbers Leetcode Solution in Python

```# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
if not l1:
return l2
if not l2:
return l1
prev = l1
carry = 0
while l1 or l2:
sum_ = (l1.val if l1 else 0) + (l2.val if l2 else 0) + carry
carry = sum_//10
sum_ = sum_%10
if l1:
l1.val = sum_
prev = l1
l1 = l1.next
else:
newNode = ListNode(sum_, None)
prev.next = newNode
prev = prev.next
if l2:
l2 = l2.next
if carry == 1:
newNode = ListNode(carry, None)
prev.next = newNode
prev = prev.next

### Add Two Numbers Leetcode Solution in CPP

```/**
* struct ListNode {
*     int val;
*     ListNode *next;
*     ListNode() : val(0), next(nullptr) {}
*     ListNode(int x) : val(x), next(nullptr) {}
*     ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *dummy=new ListNode();
ListNode *temp=dummy;
int carry=0;
while(l1!=NULL || l2!=NULL || carry){
int sum=0;
if(l1!=NULL){
sum+=l1->val;
l1=l1->next;
}
if(l2!=NULL){
sum+=l2->val;
l2=l2->next;
}
sum+=carry;
carry=sum/10;
ListNode *Node=new ListNode(sum%10);
temp->next=Node;
temp=temp->next;
}
return dummy->next;
}
};```

### Add Two Numbers Leetcode Solutions in Java

```/**
* 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) {

if(l1 == null || l2 == null){
return l1 == null ? l2 : l1;
}

ListNode result = new ListNode();
ListNode ans = result;
int carry=0;
while(l1 != null && l2 != null){

int sum = carry + l1.val + l2.val;
int digit = sum%10;
carry = sum/10;

l1 = l1.next;
l2 = l2.next;

result.next = new ListNode(digit);
result = result.next;
}

while(l1 != null){
int sum = carry + l1.val;
int digit = sum%10;
carry = sum/10;
result.next = new ListNode(digit);
l1 = l1.next;
result = result.next;
}

while(l2 != null){
int sum = carry + l2.val;
int digit = sum%10;
carry = sum/10;
result.next = new ListNode(digit);
l2 = l2.next;
result = result.next;
}

if(carry != 0){
result.next = new ListNode(carry);
}

return ans.next;
}
}```

Note: This problem Add Two Numbers is generated by Leetcode but the solution is provided by BrokenProgrammers. This tutorial is only for Educational and Learning purposes.