我有一个任意对象的数组
问题是从给定id的尾部查找对象在队列中的当前位置。
最快的方法是什么?只是要清楚一点,我不希望从id中获得Object,所以哈希映射不是解决方案。我真正需要的是职位。
我们想到了两种方法:
还有更好的主意吗?请提出建议。
答案 0 :(得分:0)
最简单的方法是将FIFO表示为双链表。该列表可以是Object
个(意味着如果您有一个ID,则还需要一个从ID到对象的映射,哈希映射或其他方法)或独立的FIFO节点(其中如果您有从ID到节点地址的映射)。
答案 1 :(得分:0)
我相信我有一个log(n)
时间解决方案。构造一个哈希表,将每个ID
映射到我们其他数据结构中的节点-自平衡二进制搜索树(红黑色,AVL,无论您喜欢什么)。在此树中,应按队列中节点的相对优先级/顺序对其进行排序。它还应在树中存储指向其父级的指针,并且子树的大小应以其自身为根。由此,我们可以查询对数时间中优先级/顺序较低的元素数。