我正在寻找this one proposed by Eric Lippert之类的解决方案。这是一个很好的实现,因为它是不可变的,附加时间为O(1),但是缺点是O(i)随机访问时间。

另一方面,追加和随机访问中的there is a great implementation of collectionO(1)。唯一的问题是它强烈依赖于可变性。

我的问题是如何实现将两种解决方案的优点结合在一起的集合?那是:


不变性
O(1)追加时间
O(1)随机访问时间


内存复杂性对我来说不是什么大问题。

最佳答案

我不知道一种实现列表的方法,该列表具有您的所有要求-不变性,持久性,O(1)插入,O(1)删除,O(1)随机访问。

我对您的建议是(1)如果您对此主题感兴趣,请阅读Chris Okasaki的书。 (或者,获得他的论文的副本,这是本书的基础。)并且(2)Chris Okasaki为您的目的建议了此处描述的数据结构:

http://www.codeproject.com/Articles/9680/Persistent-Data-Structures#RandomAccessLists

此列表是O(1)插入和O(1)插入到头部和O(lg)的随机访问。

10-08 19:50