3
一个高效的数据结构,支持Insert,Delete和MostFrequent
假设我们有一组DDD和的每个成员DDD是数据和密钥对。我们需要一个支持以下操作的数据结构: 将(d,k)(d,k)(d,k)插入DDD, 删除成员eee,(无需搜索以找到eee,例如eee指向的成员DDD), MostFrequent,它返回一个构件e∈De∈De \in D使得e.keye.keye.key是最常用的键之一DDD(请注意,最常用的键不需要唯一)。 什么是该数据结构的有效实现? 我的解决方案是为键及其频率按频率分配优先级的堆,再加上一个哈希表,在哈希表中,哈希函数将具有相同键的成员映射到哈希表中的同一插槽(指针从每个部分指向另一个部分)。 这可以使Θ(lgn)Θ(lgn)\Theta(\lg n)对于前两个操作和Θ(1)Θ(1)\Theta(1)用于第三(最坏情况的运行时间)。 我想知道是否有更有效的解决方案?(或具有相同效率的更简单解决方案?)