algorithm – 添加新元素并删除最旧元素后,从列表中获取最大元素

我有一个带有最大元素的整数列表,我需要跟踪列表中的最大元素:

[3, 1, 2] (3 is the max)

每个时间段,我得到一个新的随机元素,将其添加到列表的末尾,并在恒定时间内删除列表的第一个元素.所以,在当前时间段结束时,我的列表将变换如下:

    [3, 1, 2]      (3 is the max)
->  [3, 1, 2, -5]  (don't care about max at this moment)
->  [1, 2, -5]     (now 2 is the max)

我可以保持一个优先级队列键入列表中的值,给O(log(n))插入和删除,但我想知道是否有更高效(可能[摊销]常量时间?)的方式来做到这一点.

最佳答案

转载注明原文:algorithm – 添加新元素并删除最旧元素后,从列表中获取最大元素 - 代码日志