leetcode 每日一题 2. 两数相加
初等数学
思路:
遍历节点相加,用一个变量carry记录每个节点相加是否要进位,则节点相加对10取余,为新的链表对应节点的值,节点相加对10进行整除为carry的值。遍历相加完成后,如果carry值不为0,添加一个新节点,值为1。
代码:
# 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: re = ListNode(0) r = re carry = 0 while l1 or l2: x = l1.val if l1 else 0 y = l2.val if l2 else 0 s = carry+x+y carry = s//10 r.next = ListNode(s%10) r = r.next if l1: l1 = l1.next if l2: l2 = l2.next if carry>0: r.next = ListNode(1) return re.next