题目:
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
思路:
1.分别对两个字符串进行遍历,使用一个变量进行进位的保留。当两个字符串中有一个为空时,跳出循环,对进位进行加减。
2.使用中间量进行两个字符串的代替,只用一次循环就可以解决
1.
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
head=l1
t=None
a=0
while l1 and l2:
l1.val = l2.val + a +l1.val
if l1.val > 9:
l1.val-=10
a=1
else:
a = 0
t=l1
l1=l1.next
l2=l2.next
if l2:
t.next=l2
if a==0:
return head
elif t.next == None:
t.next = ListNode(a)
a=0
else:
while t.next and a:
t = t.next
t.val+=a
if t.val > 9:
t.val -= 10
else:
a=0
if a:
t.next = ListNode(a)
return head
2.
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
head = ListNode(0)
p = head
n3 = 0
while l1 or l2:
n1 = l1.val if l1 else 0
n2 = l2.val if l2 else 0
c = n1 + n2 + n3
p.next = ListNode(c % 10)
n3 = c // 10
p = p.next
l1 = l1.next if l1 else None
l2 = l2.next if l2 else None
if n3:
p.next = ListNode(1)
return head.next