给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
#!/usr/bin/env python # -*- coding: utf-8 -*- # @File : leet1.py # @Author: Lcy # @Date : 2018/11/22 # @Desc : 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 # Definition for singly-linked list. class ListNode: def __init__(self, x): self.value = x self.next = None class Solution: def addTwoNumbers(self, l1, l2): """ :type l1: ListNode :type l2: ListNode :rtype: ListNode """ res = ListNode(0) # 结果链表 cur = res sum = 0 # 计算节点的值 flag = 0 # 是否进位 while l1 or l2: if l1: sum += l1.value l1 = l1.next if l2: sum += l2.value l2 = l2.next # 如果flag=1 进位1 if flag == 1: sum += 1 # 如果大于等于10 就取余进位 if sum >= 10: flag = 1 sum = sum % 10 cur.next = ListNode(sum) cur = cur.next # 将计算节点值 置 0 sum = 0 # 加到最后一位如果还需要进位就补一个 1 例如 2->4->7 5->6->3 最后应该是 7->0->1->1 if flag == 1: cur.next = ListNode(1) return res.next if __name__ == '__main__': l1 = ListNode(2) l1.next = ListNode(4) l1.next.next = ListNode(3) l2 = ListNode(5) l2.next = ListNode(6) l2.next.next = ListNode(4) s = Solution() result = s.addTwoNumbers(l1, l2) while result != None: print(result.value) result = result.next