这题一开始进死胡同去了,其实不用考虑太多。按照平时的加法算就行,不断地更新位值和进位数即可。唯独要考虑的是最后一步可能首位会产生进位,单独判断一下即可。
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 = x + y + carry
r.next=ListNode(s%10)
carry = s//10
r=r.next
if(l1!=None):l1=l1.next
if(l2!=None):l2=l2.next
if carry == 1:#单独考虑首位进位,如果有进位,首位补1即可。
r.next = ListNode(1)
return re.next
(记录一下崩溃时刻)