独特的行李托克发电机

时间:2015-07-01 11:08:00

标签: algorithm data-structures hash

有三个容器,小,中,大。乘客进来,办理行李托运。行李应存放在适当的容器中并生成唯一的令牌号。然后乘客应使用相同的令牌号码取回行李。  如果小容器是完全存储在中等(如果可用或大),则可以使用。现在,如果大袋子进来并且现在有一个小空的空间,那么将小袋子移回小型和小型袋子。存放大包。 如何生成唯一标记号并在内部移动baagage而不更改标记号?

1)查找应该以恒定的时间复杂度和最小的复杂性插入。 2)我们可以使用哈希表来存储令牌号码,但如果您在内部移动行李,则不应更改令牌号码,如果行李被移除,则内存不应浪费在内存中。

有没有有效的方法来解决这个问题?提前致谢。

1 个答案:

答案 0 :(得分:1)

如果你有足够的内存,你可以直接存储一个关联数组:

f(标记)=对(容器,容器中的坐标)。

令标记为连续整数,或每次分配最小的非正数整数,或者只分配大的随机整数(当已经存在相等的整数时,再次调用随机生成)。

  • 当你拿到一个包时,给它一个标记,把它放在一个容器中并指定f(标记)=它的容器和坐标。

  • 移动行李时,请更新关联数组条目。

  • 当您将行李送回乘客时,请删除关联数组条目。

关联数组的底层实现可以是任意的(哈希表,平衡搜索树等)。