我正在研究别人的代码,部分代码让我很困惑。[1]
在remove(head)[1]
中是什么意思?另外,什么是(head, head.next)[i+1 == n]
?有人可以帮助我吗?
在代码中,head
是链表的头部,来自另一个名为ListNode的类,它包含两个函数。一个是head.val
,它显示了头部的值。另一个是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]
函数 remove 返回一个元组(实际上是一对( - 第一个值是索引,第二个值是删除的元素。因此,请尝试一次一步地解决您的问题。将对函数的调用替换为它返回的值,看看现在方括号是否有意义。