【发布时间】:2016-12-23 08:27:28
【问题描述】:
class Solution:
def addTwoListInt(self,l1,l2):
if l1==None:
return l2
if l2==None:
return l1
res = None
len1 = 0
#head1=l1
while l1!=None:
len1+=1
head1=head1.next
len2 = 0
#head2=l2
while l2!=None:
len2+=1
head2=head2.next
if len1<len2:
longer = l2
shorter = l1
else:
longer = l1
shorter = l2
carry = 0
while shorter!=None:
val = shorter.data + longer.data + carry
carry = val//10
val -= carry*10
if res==None:
res = Node(val)
result = res
else:
res.next = Node(val)
res = res.next
shorter = shorter.next
longer = longer.next
while longer!=None:
val = longer.data + carry
carry = val//10
val -= carry*10
res.next = Node(val)
res = res.next
longer = longer.next
if carry!=0:
res.next = Node(carry)
res=res.next
return result
如果我不将 head1 和 head2 用于作为列表标题的 l1 和 l2,则该函数返回 UnbondLocalError 表示结果在分配之前已被引用,如果我将 l1 和 l2 分配为 head1 和 head2 并且它有效与他们一起继续代码。我想知道如果我不在函数中本地分配它们会发生什么以及为什么它不起作用。
【问题讨论】:
-
你似乎把事情复杂化了 :) 当列表的长度不同时必须返回什么?
-
当我在这里使用像 head1/head2 这样的局部变量时,我的代码运行完美,但如果我尝试直接使用参数值,它会输出错误。在某些情况下它有效,而在其他情况下则无效。我想要一个关于这个的解释。暂时先忽略代码的复杂性吧。
-
我希望得到这样的答案:a = [1, 2, 3]; b = [4, 5, 6];地图(λx,y:x+y,a,b);输出[19]:[5、7、9]。但是当列表长度不同时需要进行一些修改。这种情况下的预期结果是什么?
-
我完全明白你的做法。但在这里,我试图从头开始使用链表来实现这一点。我的问题是,如果我不为传递的参数分配局部变量并使用该参数来遍历列表,会有什么问题?
标签: python-3.x data-structures linked-list