class Solution:
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
# # 定义一个新联表伪指针,用来指向头指针,返回结果
# re = ListNode(0)
# # 定义一个可移动的指针,用来指向存储两个数之和的位置
# r = re
# # 定义一个进位数的指针,用来存储当两数之和大于10的时候,
# carry = 0
# while(l1 or l2):
# # 如果l1 不等于null时,就取他的值,等于null时,就赋值0,保持两个链表具有相同的位数
# x = l1.val if l1 else 0
# # 如果l2 不等于null时,就取他的值,等于null时,就赋值0,保持两个链表具有相同的位数
# y = l2.val if l2 else 0
# # 将两个链表的值,进行相加,并加上进位数
# s = carry+x+y
# # 计算进位数
# carry = s//10
# # 将求和数赋值给新链表的节点,
# # 注意这个时候不能直接将sum赋值给cur.next = sum。这时候会报类型不匹配。
# # 所以这个时候要创一个新的节点,将值赋予节点
# r.next=ListNode(s % 10)
# # 将新链表的节点后移
# r = r.next
# # 当链表l1不等于null的时候,将l1 的节点后移
# if(l1!=None):
# l1=l1.next
# # 当链表l2不等于null的时候,将l1 的节点后移
# if(l2!=None):
# l2=l2.next
# # 如果最后两个数,相加的时候有进位数的时候,就将进位数,赋予链表的新节点。
# # 两数相加最多小于20,所以的的值最大只能时1
# if(carry>0):
# r.next = ListNode(1)
# # 返回链表的头节点
# return re.next
re = ListNode(0)
re_copy = re
carry = 0
while (l1 or l2):
x = l1.val if l1 else 0
y = l2.val if l2 else 0
sum = carry + x + y
carry = sum // 10
re_copy.next = ListNode(sum % 10)
re_copy = re_copy.next
if l1:
l1 = l1.next
if l2:
l2 = l2.next
if (carry > 0):
re_copy.next = ListNode(1)
return re.next
Leetcode每日一题(python实现)02-两数相加
于 2022-06-21 23:58:55 首次发布