有三个容器,小的,中的和大的乘客进来,托运行李行李应存放在适当的容器中,并生成唯一的令牌号码然后乘客应使用相同的代币号码取回行李。
诀窍是如果小容器是完全存储在中型,如果可用或大型现在,如果大袋子进来了,而现在小袋子里有一个空位,就把小袋子移回小袋子里,把大袋子放好。
如何在不更改令牌号的情况下生成唯一令牌号并在内部移动baagage?
1)查找应该以恒定的时间复杂度和最小的复杂性插入。
2)我们可以使用哈希表来存储令牌号码,但是如果您在内部移动行李,令牌号码不应该更改,如果行李被移除,内存中的空间不应该浪费。
有什么有效的方法来解决这个问题吗提前谢谢。
最佳答案
如果有足够的内存,可以直接存储关联数组:
f(标记)=对(容器,容器中的坐标)。
让令牌成为连续整数,或者每次分配最小的不存在的正整数,或者只分配大的随机整数(当已经存在一个相等的整数时,再次调用随机生成)。
当你得到一个包时,给它一个标记,把它放在一个容器中,并指定f(标记)=它的容器和坐标。
移动行李时,更新关联数组条目。
当您将行李交还给乘客时,请删除关联数组条目。
关联数组的底层实现可以是任意的(哈希表、平衡搜索树等)。