【发布时间】:2013-11-16 22:17:31
【问题描述】:
面试时问过这个问题:
提出并实现一种数据结构,该结构适用于来自最终和连续整数范围的整数数据。数据结构应支持O(1) 插入和删除操作以及findOldest(插入数据结构的最旧值)。
不允许重复(即如果某些值已经在里面 - 它不应该再次添加)
此外,如果需要,某些 init 可能会用于初始化。
我提出了一个解决方案,使用 1/0 的数组(大小作为范围大小)表示值在里面。它解决了插入/删除问题,需要O(range size)初始化。
但我不知道如何在给定的约束下实现findOldest。
有什么想法吗?
附:不允许动态分配。
【问题讨论】:
-
哈希表,其条目按插入顺序保持相互链接。可能会针对要存储的特定类型的数据进行优化;我只是选择了简单、通用的答案。
-
我假设我们谈论的是一个类似集合的数据结构——即没有数据排序,在这种情况下哈希表是正确的。 ...或者它是有序的,但只插入+删除顶部,在这种情况下它是堆栈。或者是随机访问插入+删除,在这种情况下是不可能的(据我们所知)。