【发布时间】:2017-07-26 03:09:21
【问题描述】:
我正在研究别人的代码,部分代码让我很困惑。 [1] 在remove(head)[1] 中是什么意思?另外,(head, head.next)[i+1 == n] 是什么?有人可以帮我吗?
在代码中,head 是链表的头部,来自另一个名为 ListNode 的类,它包含两个函数。一个是head.val,表示head的值。另一个是head.next,它调用链表中的下一个对象。这里n 是一个整数。此代码尝试从列表末尾删除第 N 个节点并返回其头部。
例如,
给定链表:1->2->3->4->5,n = 2。
去掉末尾第二个节点后,链表变成1->2->3->5。
以下是代码:
class Solution:
def removeNthFromEnd(self, head, n):
def remove(head):
if not head:
return 0, head
i, head.next = remove(head.next)
return i+1, (head, head.next)[i+1 == n]
return remove(head)[1]
【问题讨论】:
-
当它没有放在函数的末尾时它会做什么。
i+1 == n的评估结果是什么?int(True)或int(False)的评估结果是什么?如果你能回答所有这些,你的问题就解决了。 -
@AlexanderHuszagh 我编辑了这篇文章。希望这次很清楚。
-
问题很明确。但答案也很明确。我问你是为了让你想想代码的作用:
[]做了什么,例如,当在列表上调用时?int(True)是做什么的?知道了就可以看懂代码了。 -
看 [1]:stackoverflow.com/questions/6422228/… 这可能会有所帮助
标签: python algorithm python-3.x linked-list