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

 

posted @ 2020-04-14 20:53  nil_f  阅读(121)  评论(0)    收藏  举报