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