我如何在python中删除链表中的元素,而只能访问要删除的元素?

问题描述 投票:-1回答:2

嗨,我正在研究leetcode问题:

(具有帐户的链接:https://leetcode.com/explore/challenge/card/june-leetcoding-challenge/539/week-1-june-1st-june-7th/3348/

编写一个函数以删除单链接列表中的节点(尾部除外),仅授予对该节点的访问权限。

注意:

  • 链接列表将至少包含两个元素。
  • 所有节点的值都是唯一的。
  • 给定的节点将不会是尾部,它将始终是链表的有效节点。
  • 请勿从函数中返回任何内容。

我正在使用Python进行工作,并且真的很难理解这个问题是怎么可能发生的。

如果我仅有权访问要删除的列表节点,那么我可以明确地说

listNode.next = None

和要删除的列表现在将只指向链接到要删除的列表节点的元素,我想将其设置为指向已删除元素指向的下一个元素。

但是如果只给我要删除的元素,我要如何访问列表中的前一个元素,因为它是一个单链列表,以前没有该元素的概念?

我是否正确理解了这个问题,因为目前看来对我来说是不可能的?

或者我根本缺乏解决该问题的方法或知识吗?

任何人都可以提供一些提示吗?

python algorithm data-structures linked-list singly-linked-list
2个回答
0
投票

是的,您了解它是正确的。解决此问题的方法是用下一个节点的值编辑当前节点的值,然后删除下一个元素(因为您已经将其复制到当前元素中了。)

class Solution(object):
    def deleteNode(self, node):
        node.val = node.next.val
        node.next = node.next.next

话虽如此,这个LC问题并没有真正的收获。在实际情况下,任何此类要求都将具有上一节点的引用,或者上下文中的列表将成为双链表,并且删除节点比复制数据要好得多,因为这些节点可以拥有比单个节点更多的数据属性。 。


0
投票

因为这是一个挑战,所以我只提供一个提示:

© www.soinside.com 2019 - 2024. All rights reserved.