Python解决方案:删除双向链表中键的所有出现

2025年1月5日 | 阅读 4 分钟

在此问题中,我们将给定一个双向链表和一个键 x。我们的任务是从给定的双向链表中删除所有键 x 的出现。

让我们看一个例子来理解这个问题

示例

输入: 2 ó 3 ó 6 ó 3 ó 5 ó 3 ó 7 ó 1 ó 8 ó 3, x = 3

输出: 2 ó 6 ó 5 ó 7 ó 1 ó 8

我们已经删除了所有值为 3 的节点

方法 - 1

这种方法的思路很简单。我们将遍历给定的双向链表。对于每个节点,我们将检查该节点的值是否与 x 相同。如果值相同,那么我们将使用 prev 指针访问前一个节点,并将其指向当前节点的下一个节点。然后,我们将下一个节点的 prev 指针指向当前节点的前一个节点。这样,值与 x 相同的当前节点将被删除。

代码

输出

The original Doubly linked list:
4 8 1 7 3 5 3 6 3 2 None
The modified Doubly linked list after the deletion of the key 3 :
4 8 1 7 5 6 2 None

时间复杂度:我们使用线性循环来遍历链表。因此,此方法的 time complexity 为线性,即 O(n)。

辅助空间:我们没有为此程序使用任何额外的空间;因此,space complexity 为常数,即 O(1)。