如何设计一个 arraylike 数据结构,支持 O(1) 的按索引访问和 O(1) 的按索引删除.

2021-01-07 21:25:05 +08:00
 littleMaple

用代码来作为例子,假设我们的数据结构名为 MagicArray:

magic_array = MagicArray("How are you", "I am find", "Thank you", "And you")

print(magic_array[2])  # 这一行应该打印 "Thank you",且该行的运行时间应该与 magic_array 的长度无关,或者至少“摊还地”无关.

magic_array.remove(1)  # 这一行的运行时间应该与 magic_array 的长度无关,或者至少“摊还地”无关.

print(magic_array[2])  # 这一行应该打印 "And you",且该行的运行时间应该与 magic_array 的长度无关,或者至少“摊还地”无关.

如果我们无法设计出这样的数据结构,我们如何形式证明它不可能存在?如果确实不可能存在,我们可以设计出的最接近它的最快的数据结构能够有多快?

2445 次点击
所在节点    算法
22 条回复
littleMaple
2021-01-08 03:03:43 +08:00
@shiji #19 我说的 arraylike 不是这个意思,你可以看我写在标题里的那一段代码,这个数据结构应该要能够满足那里描述的行为.
ericls
2021-01-08 03:17:53 +08:00
那就让插入贵一点嘛

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/742693

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX