题目
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8
原因:342 + 465 = 807
思路
动态图
代码
# 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。## 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。## 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。## 示例:## 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)# 输出:7 -> 0 -> 8# 原因:342 + 465 = 807## Related Topics 链表 数学# 👍 4677 👎 0# leetcode submit region begin(Prohibit modification and deletion)# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object):def addTwoNumbers(self, l1, l2):""":type l1: ListNode:type l2: ListNode:rtype: ListNode"""# 进位carry = 0first = TrueheadNode = NonecurrentNode = Nonewhile l1 or l2 or carry != 0:var1 = 0var2 = 0if l1:var1 = l1.vall1 = l1.nextif l2:var2 = l2.vall2 = l2.nextsum = var1 + var2 + carryif sum > 9:carry = 1sum %= 10else:carry = 0node = ListNode(sum)if first:headNode = nodecurrentNode = nodefirst = Falseelse:currentNode.next = nodecurrentNode = currentNode.nextreturn headNode# leetcode submit region end(Prohibit modification and deletion)if __name__ == '__main__':l1 = ListNode(1)l1.next = ListNode(2)l2 = ListNode(2)l2.next = ListNode(3)l3 = Solution().addTwoNumbers(l2, l1)print(l3)
