我不能让我的标题非常具有描述性,道歉!
对于每个数据结构,是否支持某些具有分摊运行时间的操作,在最坏的情况下,在相同运行时间内支持相同操作的另一个数据结构是这样吗?我对迭代,ephermal数据结构和功能性数据结构感兴趣.
我确信以前一定要问过这个问题.我似乎无法找到正确的搜索关键字(在Google,SO,TCS中).我在{yes,no,open}中寻找引用的答案.
最佳答案 不,至少在其中
element distinctness个n元素需要时间Ω(n log n)的模型中.
考虑以下数据结构,我使用Python描述.
class SpecialList:
def __init__(self):
self.lst = []
def append(self, x):
self.lst.append(x)
def rotationalsimilarity(self, k):
rotatedlst = self.lst[k:] + self.lst[:k]
count = sum(1 if x == y else 0 for (x, y) in zip(self.lst, rotatedlst))
self.lst = []
return count
显然附加和旋转相似性(因为它清除列表)是摊销O(1).如果旋转相似性是最坏情况O(1),那么我们可以提供O(1)撤销操作,将数据结构恢复到其先前状态.因此,我们可以在时间O(n)中实现元素清晰度.
def distinct(lst):
slst = SpecialList()
for x in lst:
slst.append(x)
for k in range(1, len(lst)): # 1 <= k < len(lst)
if slst.rotationalsimilarity(k) > 0:
return False
slst.undo()
else:
return True