在Python中加两个数字

假设我们给出了两个非空链表。这两个列表代表两个非负整数。这些数字以相反的顺序存储。它们的每个节点仅包含一位。将两个数字相加,然后将结果作为链表返回。我们假设两个数字不包含任何前导零,除了数字0本身。因此,如果数字为120 + 230,则链接列表将为[0→2→1] + [0→3→2] = [0→5→3] = 350。

为了解决这个问题,我们将按照以下步骤

  • 取两个列表l1和l2。将head和temp初始化为null

  • c:= 0

  • 而l1和l2都是非空列表

    • head.next:=节点和head:=节点

    • head:=节点和temp:=节点

    • 如果l1为非空,则设置:= 0,否则设置:= l1.val

    • 如果l2为非空,则设置b:= 0,否则设置b:= l2.val

    • n:= a + b + c

    • 如果n> 9,则c:= 1否则为0

    • node:=创建一个值为n mod 10的新节点

    • 如果head为null

    • 除此以外

    • l1:= l1的下一个节点(如果l1存在)

    • l2:= l2的下一个节点(如果l2存在)

    • 如果c不为零,则

      • node:=新节点,值为1,位于head:= node的下一个

    • 返回温度

    示例(Python)

    让我们看下面的实现以获得更好的理解

    class ListNode:
       def __init__(self, data, next = None):
          self.val = data
          self.next = next
    def make_list(elements):
       head = ListNode(elements[0])
       for element in elements[1:]:
          ptr = head
          while ptr.next:
             ptr = ptr.next
          ptr.next = ListNode(element)
       return head
    def print_list(head):
       ptr = head
       print('[', end = "")
       while ptr:
          print(ptr.val, end = ", ")
          ptr = ptr.next
       print(']')
    class Solution:
       def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
          head = None
          temp = None
          c = 0
          while l1 or l2:
             if not l1:
                a= 0
             else:
                a = l1.val
             if not l2:
                b=0
             else:
                b = l2.val
             n = a +b + c
             c = 1 if n>9 else 0
             node = ListNode(n%10)
             if not head:
                head = node
                temp = node
             else:
                head.next = node
                head = node
             l1 = l1.next if l1 else None
             l2 = l2.next if l2 else None
          if c:
             node = ListNode(1)
             head.next = node
          return temp
    ob1 = Solution()l1 = make_list([0,2,1])
    l2 = make_list([0,3,2])
    print_list(ob1.addTwoNumbers(l1, l2))

    输入值

    [0,2,1]
    [0,3,2]

    输出结果

    [0,5,3]