Showing posts with label LeetCode Coding Solution. Show all posts
Showing posts with label LeetCode Coding Solution. Show all posts
Friday, January 14, 2022

Add Two Numbers

 

Add Two Numbers
Medium

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.
PYTHON SOLUTION

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def summing(self,val1=0,val2=0):
        sumval=(val1+val2)
        rem=0
        if sumval/10 >=1.0:
            return sumval%10,sumval//10
        return sumval,rem
    
    def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
        listsum=[]
        rem=0
        head=temp=ListNode(0)
        while l1 or l2:
            if l1 and l2:
                sumval,rem=self.summing(l1.val,l2.val+rem)
                l1,l2=l1.next,l2.next
            elif l1:
                sumval,rem=self.summing(l1.val+rem)
                l1=l1.next
            else:
                sumval,rem=self.summing(l2.val+rem)
                l2=l2.next
            temp.next= ListNode(sumval)
            temp=temp.next
        if rem:
            temp.next= ListNode(rem)
        return head.next