Leetcode2 两数相加 Python

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

题目介绍还是比较简单,这个题也比较简单,需要注意的就是:

  1. 保持链表完整性,一定要使最后的Next的值为none

2.进位问题,相加可能会有进位

最后官方的题解也不能用python3 过题,建议python2,至于原因我一晚上也没弄明白!

class Solution(object):
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        p = l1
        q = l2
        res = ListNode(0)
        r = res
        s = 0 # 进位
        # 当然也可以做成带头结点返回为res.next即可
        while(p!=None or q!=None):
            p_v = 0 if p==None else p.val
            q_v = 0 if q==None else q.val
            r_v = (p_v+q_v+s)%10
            s = (p_v+q_v+s)//10
            r.next = ListNode(r_v)
            r = r.next
            r.next = None
            # 如果不为None的时候继续遍历,否则停止遍历
            p =p if p==None else p.next
            q =q if q==None else q.next
        if s !=0:
            r.next = ListNode(s)
            r = r.next
            r.next = None
        return res.next 
原文地址:https://www.cnblogs.com/lunatic-talent/p/12805779.html