链接列表 - 从指定范围中删除数字

时间:2017-08-13 17:00:10

标签: algorithm

我有一个链接列表,其中包含从0到1的数字,我的任务是从此列表中删除给定范围(x,y)中的数字。您是否知道如何以合理的复杂性解决该问题?

2 个答案:

答案 0 :(得分:4)

让我们首先考虑一下LinkedList的结构。让我们看看下面的图片:

Doubly Linked List structure (双重)链表中的每个元素都有一个指向下一个(和前一个)元素的指针。 Java类LinkedList例如是双向链表

在这样的列表中,没有直接访问“给我元素B的索引 ”。我们只有head引用(指向列表的开头)和tail引用(指向结尾)。要找到元素B ,我们需要从head(或tail)开始,并按照next(或{{}完全遍历整个列表1}})元素的指针,直到找到元素B

因此,回到您的问题,没有有效的方法可以从prev中删除range(x, y)的元素。这只能在排序结构中有效,例如LinkedList或排序PriorityQueue二进制搜索产生ArrayList)或者可以直接访问O(log(n)之类的元素。 1}}例如。

以下是 Java 中的代码段,它解决了HashSet的任务,但是,如上所述,它效率不高,运行时间为LinkedList(我们需要查看每个元素以找出需要删除的元素):

O(n)

答案 1 :(得分:-2)

如果你考虑一下,linkedlist没有方法getAtIndex。你只能从Head开始,然后按照自己的方式前进到尾部,反之亦然。这种复杂性将是O(n)