leetcode问题,适用于testcode,但标记为错误

时间:2019-01-25 21:52:36

标签: python

这是原始问题: https://leetcode.com/problems/add-two-numbers/

我的解决方案被标记为错误,但是可以在测试用例上使用,我不知道为什么。 请问。

class Solution(object):
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        ln = ListNode(0)

        lll= ln
        val=0
        carry=0
        while l1 or l2:

            if l1 and l2:
                val, carry = (l1.val+l2.val+carry)%10, (l1.val+l2.val+carry)/10
                l1=l1.next
                l2=l2.next

            elif l2:
                val, carry = l2.val%10, 0
                l2=l2.next
            elif l1:
                val, carry = l1.val%10, l1.val/10
                l1=l1.next
            ln.val=val
            if l1 or l2 or carry>0:
                ln.next=ListNode(0)

            ln=ln.next


        return(lll)

1 个答案:

答案 0 :(得分:1)

  1. 对于列表之一结束的情况,您不会在值上加上进位。 考虑例如:
    [9,2]
    [1]
    此处,在将1和9相加后,值为0,进位为1。现在,l2终止,因此在l1的循环中,需要将进位添加到值val=(l1.val+carry)%10
  2. 还需要添加l1l2都终止的情况。考虑例如:
    [9,9]
    [1]
    在这里,相加后我们得到[0,0]但两个l1,l2都终止了,因此需要在while循环之后创建一个带有进位的新节点。