代码之家  ›  专栏  ›  技术社区  ›  mesibo

算法-查找项目在队列中的位置

  •  2
  • mesibo  · 技术社区  · 7 年前

    我有一个任意对象的数组

    1. 在队列末尾添加新对象(尾部)
    2. 如果需要,可以删除挂起处理的对象。

    问题是从给定id的尾部查找队列中的对象当前位置。

    我们想到了两种方法:

    1. 在对象中添加一个新字段,该字段存储全局索引,对于添加到队列中的每个对象,该索引都会递增。然后,我们可以通过检查存储在最后一项和该项中的全局索引来快速获得位置。但是,唯一的复杂性是,如果删除了其中一个对象,则需要更新下面所有项的全局索引。

    有更好的主意吗?请建议。

    0 回复  |  直到 7 年前
        1
  •  0
  •   Sneftel    7 年前

    最简单的方法是将FIFO表示为双链表。此列表可以是 Object s(也就是说,如果你有一个ID,你也需要一个从ID到object的映射,或者是一个hash映射或者其他的方法),或者是独立的FIFO节点(在这种情况下,你需要一个从ID到节点地址的映射)。

        2
  •  0
  •   Dillon Davis    7 年前

    log(n) 时间解决方案。构造一个哈希表来映射每个 ID