2. 两数相加


一、题目描述

给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序的方式存储的,并且它们的每个节点只能存储一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

您可以假设除了数字0之外,这两个数都不会以0开头。

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

二、思路 & 代码实现

1. 思路

没什么特殊方法,一个一个遍历。

2. 代码实现

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        # 创建链表头结点
        new_list = cur = ListNode(None)
        sums = 0
        while l1 or l2 or sums:
            sums += (l1.val if l1 else 0) + (l2.val if l2 else 0)

            cur.next = ListNode(None)
            cur = cur.next
            sums, cur.val = divmod(sums, 10)

            l1 = l1.next if l1 else None
            l2 = l2.next if l2 else None
         return new_list.next

三、表现

运行时间 表现 内存消耗 表现
88ms 20.49% 13.3MB 74.92%

文章作者: Arvin He
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Arvin He !
评论
 上一篇
3. 无重复字符的最长子串 3. 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
2020-09-23
下一篇 
617. 合并二叉树 617. 合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。
2020-09-23
  目录