Java 有 multiset,SmallTalk 有 Bag 类,据说它们的功能相同:保留一组值,但允许多个值(每个值都有一个计数)。
但似乎多重集可以通过一个对键进行计数的哈希表来实现(或者可能还有其他可能的实现)。
多重集或包的某些实现是否提供比上述哈希更好的时间复杂度?所需的操作可以是
- 插入项目
- 删除项目
- 获取集合中的最小值
- 获取集合中的最大值
特别是,我希望对于上述 4 个操作中的每一个,它都可以做得比O(n)
,可能全部O(log n)
或更好。O(log n)
(上面的 3 和 4仅在当添加或删除值时以某种排序方式维护多重集时才预期。)