Skip to content

2. Add Two Numbers

Problem Page: https://leetcode.com/problems/add-two-numbers/

#
# @lc app=leetcode id=2 lang=python3
#
# [2] Add Two Numbers
#
# https://leetcode.com/problems/add-two-numbers/description/
#
# algorithms
# Medium (40.41%)
# Likes:    25480
# Dislikes: 4941
# Total Accepted:    3.6M
# Total Submissions: 8.8M
# Testcase Example:  '[2,4,3]\n[5,6,4]'
#
# 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.
#
#
#

# @lc code=start

# Definition for singly-linked list.

from typing import Optional


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]:

        c = 0
        head = node = None
        while l1 or l2 or c:

            x = c

            if l1:
                x += l1.val
                l1 = l1.next

            if l2:
                x += l2.val
                l2 = l2.next

            if not head:
                head = node = ListNode(x % 10)
            else:
                node.next = ListNode(x % 10)
                node = node.next

            c = x // 10

        return head


# @lc code=end

Last update: Apr 23, 2023
Created: Apr 23, 2023

Comments