原来的问题是: 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)
[9,2]
[1]
这里,在加1和9之后,值是0,进位是1。现在,
l2
终止,所以在l1
的循环中,需要将进位添加到值val=(l1.val+carry)%10
l1
和l2
终止的情况。例如:[9,9]
[1]
在这里,添加之后我们得到[0,0],但是这两个
l1,l2
都终止了,因此需要在while循环之后创建一个带有进位的新节点。你知道吗相关问题 更多 >
编程相关推荐