我有一个具有最大元素的整数列表,我需要跟踪列表中的最大元素:
[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)) 插入和删除,但我想知道是否有更有效的(可能 [摊销] 恒定时间?)方法来做到这一点。