【发布时间】:2011-10-10 15:29:24
【问题描述】:
我正在寻找支持以下操作的最优(时间和空间)最优数据结构:
- 将人员(姓名、年龄)添加到人员的全球数据存储中
- 获取具有最小和最大年龄的人
- 根据 name 搜索 Person 的 age
这是我能想到的:
- 保留一个 Person 数组,并在要添加新 Person 时继续添加到数组末尾
- 保留人名与年龄的哈希值,以帮助获取具有给定名称的人的年龄
- 为具有最小和最大年龄的人维护两个对象 minPerson 和 maxPerson。如果需要,请在添加新人员时更新此内容。
现在,虽然我保留了一个散列以提高 (3) 的性能,但我认为如果散列中有很多冲突,我认为这可能不是最好的方法。此外,添加 Person 意味着添加到哈希的开销。
这里有什么可以进一步优化的吗?
注意:我正在寻找在最短的时间和空间内支持所有这些操作的最佳(平衡)方法。
【问题讨论】:
-
不需要数组。只是哈希 + min 和 max 应该可以工作。请注意,这样的结构不支持从中删除,因为这可能会使最小值或最大值无效。