https://leetcode-cn.com/problems/add-two-numbers/
点击查看【bilibili】
# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution:def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:# 首先,我们要考虑如果出现空值的情况if l1 == None:return l2if l2 == None:return l1# 创建一个存储结果的Listnoderesult = ListNode(0)p = result# 创建一个保存进位的变量carry = 0while l1 and l2:# l1.val 与 l2.val 是指当前位的数值# 第一次进入循环也就是l1与l2的第一位# 也就是 l1.val=2, l2.val=5p.next = ListNode((l1.val + l2.val + carry) % 10)# 我们用 // 做除法运算,然后返回其商的整数部分,舍掉余数carry = (l1.val + l2.val + carry) // 10# 在Listnode中刷新下一位l1 = l1.nextl2 = l2.nextprint(p)print(result)# 存储Listnode的变量也要前进一位p = p.nextprint(p)print(result)# 接下来考虑l2如果位数比l1长的情况if l2:while l2:p.next = ListNode((l2.val + carry) % 10)carry = (l2.val + carry) // 10l2 = l2.nextp = p.next# 接下来考虑l1如果位数比l2长的情况if l1:while l1:p.next = ListNode((l1.val + carry) % 10)carry = (l1.val + carry) // 10l1 = l1.nextp = p.nextif carry == 1:p.next = ListNode(1)return result.next
