假设有一个列表。列表中的每个项目都有一个唯一的 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/