Nic*_*ton 8 arrays algorithm complexity-theory big-o
我怀疑有一种方法,如果你可以通过更快地找到一系列重复值的另一端来节省,而不是迭代通过该子列表
Pet*_*ham 12
一般来说,没有.想象一下N个重复列表.你必须进行N-1次移除,因此O(N).
如果指定的特定数据结构优先于O(1)删除元素,那么对于某些类型的输入可能有更好的方法.
即使你可以有效地删除O(1)中的一系列元素,并且需要O(1)时间来找到重复 - 想象一个列表,其中有N/2对重复.您仍然需要进行N/2次搜索并删除N/2范围,两者都是O(N).
(由于问题标题是'删除重复项',但是还有一点含糊不清,但是主体特定于删除一个范围)
如果排序产生的列表具有以下表示 - 每个节点都有一个值和一个出现次数,那么删除一个值的重复将为该节点简单地设置计数为1.(跳过列表可能具有类似的特征,假设一个体面的垃圾收集环境,其中没有回收内存的成本),因此对于一个复制将是O(1).如果您需要从列表中删除所有重复项,它仍然是O(N).