给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
题目介绍还是比较简单,这个题也比较简单,需要注意的就是:
- 保持链表完整性,一定要使最后的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