我正在寻找一个Scala(或Java / Guava)集合,它支持O(1)访问(并理想地删除)其最小元素以及O(log n)插入和删除任意元素。
思想?
答案 0 :(得分:5)
实施说明:此实施为排队和出列方法(
offer
,poll
,remove()
和add
)提供了O(log(n))时间;remove(Object)
和contains(Object)
方法的线性时间;和检索方法的常量时间(peek
,element
和size
)。此课程是Java Collections Framework的成员。
答案 1 :(得分:-1)
创建由ArrayList支持的自己的集合。它需要额外的字段最小元素和最小元素的位置。如果该元素是新的最小值,则在添加元素时更新这些字段。