algorithm - 在列表中查找最低未使用的唯一 ID

标签 algorithm list

假设有一个列表。列表中的每个项目都有一个唯一的 ID。

List [5, 2, 4, 3, 1]

当我从此列表中删除一个项目时,该项目的唯一 ID 也会随之消失。

List [5, 2, 3, 1]

现在假设我想向列表中添加另一个项目,并为其指定最低的唯一 ID。

将新项目添加到列表时,获取最低唯一 ID 的最简单方法是什么?

这里有一个限制:如果我在删除一个项目时没有重新分配另一个项目的唯一 ID,我会更喜欢它。

我意识到,如果我在删除 4 时将唯一 ID 5 重新分配给唯一 ID 4,将很容易找到唯一 ID。然后我可以获得列表的长度 (5) 并使用唯一 ID 创建新项目用那个数字。

那么有没有另一种方法,它不涉及遍历整个列表?

编辑:

语言是 java,但我想我正在寻找一种通用算法。

最佳答案

一个简单快捷的方法是把你删除的id放在一个优先队列中,当你插入新的id时只从那里选择下一个id(或者当队列是时使用第一个列表的size() + 1作为id空的)。然而,这将需要另一个列表。

关于algorithm - 在列表中查找最低未使用的唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3439571/

相关文章:

python - 为什么 IPython `%timeit` 会为 O(n) 解决方案产生更慢的时间?

Java AES 解密错误,加密工作正常

python - python中的列表索引比较

.net - 将通用列表与数组进行比较

java - 检查数字是否为泛数字的最快算法?

c++ - 具有开始和结束索引的最大子数组

java - 搜索两个数组进行匹配,没有额外的内存

python - 如果大小增加,为什么 python 列表的位置没有改变?

python - 如何用Python中字典中的键替换列表中的项目

python - 使用python比较来自不同列表的元素