我正在寻找一种数据结构来帮助我管理整数池。这是一个池,我从池中删除整数一会儿,然后将它们放回原处,期望它们会再次被使用。但是,它还有一些其他奇怪的限制,因此常规池不能很好地工作。
硬性要求:
- 恒定时间访问最大的使用整数。
- 整数的稀疏性需要有界(即使只是原则上)。
我希望整数彼此接近,因此我可以使用范围内最少的未使用整数快速迭代它们。
如果它们有助于选择数据结构,请使用它们,否则请忽略它们:
- 池中的整数基于 0 且连续。
- 池的大小可以是恒定的。
- 池中的整数仅用于短期高流失率。
我有一个可行的解决方案,但感觉不优雅。
我的(次优)解决方案
恒定大小的池。
将所有可用的整数放入一个有序集合(free_set)。
当请求一个新整数时,从 free_set 中检索最小的整数。
将所有使用中的整数放入另一个排序集(used_set)。
当请求最大时,从 used_set 中检索最大的。
有一些优化可能有助于我的特定解决方案(优先队列、记忆等)。但我的整个方法似乎很浪费。
我希望有一些深奥的数据结构完全适合我的问题。或者至少是更好的池化算法。