【发布时间】:2015-09-30 20:44:19
【问题描述】:
我正在处理数据结构测试中的一个问题,我需要建议一个符合以下要求的数据结构S:
注意:S 应该允许插入具有相同键的多个值
-
INSERT(S, k):将带有键k的对象插入到S与时间 复杂性O(lg n) -
DELETE_OLD(S):删除S中最旧的对象,具有时间复杂度O(lg n) -
DELETE_OLD_MIN(S): 删除键最低的最旧对象 在S中,时间复杂度为O(lg n) -
MAX_COUNT(S):返回频率最高的key(最多S中的公共键),时间复杂度为O(lg n) -
FREQ_SUM(S,z):在S中找到两个键(a 和 b),这样frequency.a + frequency.b = z时间复杂度O(lg n)
我尝试了一些想法,但无法通过最后两个。
编辑:问题A data structure traversable by both order of insertion and order of magnitude 没有回答我的问题。请不要将其标记为重复。谢谢。
编辑 #2:freq_sum(S,z) 所做的示例:
假设一个调用freq_sum(S,5)的数据结构包含:2, 2, 2, 3, 4, 4, 4, 5, 5
2和5的组合可能是一个可能的答案,因为2在结构中存在3次,5存在2次,所以3+2=z
【问题讨论】:
-
最后一个要求看起来与数据结构的关系不大,而与使用查找的算法更多。
-
@sds 这不是那个问题的重复
-
@EvanBechtol:我认为应用相同的方法非常相似。
-
@Tom Klino 除了最后一个和第三个之外,rest 可以在 log n 时间内轻松实现。你怎么看?
标签: algorithm data-structures time-complexity