思路
- 两个结点的值相加除以10,将结果的整数部分存储至新链表里(prelist),商加入两个链表下一个结点的值相加的运算中
- 若某个链表结点为None(走到尾部)则设置结点值为0来进行计算
- 链表都遍历结束后,若还有商(即最后一个结点时,相加值>10,需要进位)(即 s!=0),将商也加入新链表中
代码
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
if l1 is None:
if l2 is None:
return None
else:
return l2
else:
if l2 is None:
return l1
prelist = ListNode(-1)
pre =prelist
s = 0
while l1 or l2:
if l1:
t1=l1.val
else:
t1 = 0
if l2:
t2=l2.val
else:
t2 = 0
cur=t1+t2+s
s=cur//10
cur = cur%10
pre.next =ListNode(cur)
pre=pre.next
if l1:
l1=l1.next
if l2:
l2=l2.next
if s != 0:
pre.next=ListNode(s)
return prelist.next