从队列获取O(1)时间的最小值/最大值?

如何在0(1)时间复杂度的任何时间从队列中检索max和min元素?早些时候,我使用Collections.max和min查找元素,但这将是0(n)。

回答:

您只有2种方法来获得最小/最大操作的O(1):

  • 如果结构已排序,并且您知道最大值/最小值位于何处
  • 如果结构未排序且仅允许插入:每次插入项目并分别存储值时,您可以重新计算最小值/最大值
  • 如果结构未排序并且允许插入和删除:我认为您不能做得比O(n)更好,除非您使用多个集合(但该解决方案不支持删除任何元素,仅支持头/尾元素,在队列中应该是这样)。

以上是 从队列获取O(1)时间的最小值/最大值? 的全部内容, 来源链接: utcz.com/qa/404558.html

回到顶部