两数相加
# Definition for singly-linked list.
#class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
if l1 is None:
return l2;
if l2 is None:
return l1;
flag=0;
tmp = ListNode(0)
res=tmp;
while l1 or l2 :
tmp_sum=0;
if l1 :
tmp_sum =l1.val;
l1=l1.next;
if l2 :
tmp_sum += l2.val;
l2=l2.next;
tmp_res=((tmp_sum+flag)%10);#如果这句话放在后面的话,那flag已经变化了
flag=((tmp_sum+flag)//10);
res.next=ListNode(tmp_res)
res=res.next;
if flag:
res.next=ListNode(1);
res = tmp.next # 赋值 我的理解是tmp本身和res是完全相同的,但是tmp仍然指向最开始的头节点,所以,此处让res=tmp.next,获取头节点之后的所有节点
del tmp # 删除tmp变量
return res # 返回res链表
if l1=None 这个写法是错的 会导致SyntaxError: invalid syntax
这里必须写成if l1 不能写成if (l1.val!=0)会超时报错
也不能写成 if (l1!=0),这里l1 l2是节点,只有有 和没有之分,没有等于0和不等于0之分
也不能写成 if l1!=0: 同上。
可以写成 if l1 !=None 或者if l1 is not None
if l1 !=None if l1 is not None if l1 三者的执行用时具有随机性
总结: if l1 !=None 或者if l1 is not None 都是可以用的