当我们将它放在函数的末尾和元组的末尾时,[1]意味着什么?

时间:2017-07-26 03:09:22

标签: python algorithm python-3.x linked-list

我正在研究其他人的代码,部分代码让我很困惑。 [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]

1 个答案:

答案 0 :(得分:1)

函数remove返回一个元组(实际上是一对) - 第一个值是索引,第二个值是删除的元素。因此,尝试一步一步解决您的问题。用它返回的值替换对函数的调用,看看现在方括号是否有意义。