我正在寻找this one proposed by Eric Lippert之类的解决方案。这是一个很好的实现,因为它是不可变的,附加时间为O(1)
,但是缺点是O(i)
随机访问时间。
另一方面,追加和随机访问中的there is a great implementation of collection和O(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)的随机访问。