Add Two Numbers Leetcode Solution

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.

Add Two Numbers Leetcode Solution
Add Two Numbers Leetcode Solutions

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
            head = 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
            return head

 Add Two Numbers Leetcode Solution in CPP

/**
 * Definition for singly-linked list.
 * 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

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

NEXT: N-Queens Leetcode Solution

Leave a Reply

Your email address will not be published. Required fields are marked *