AlgoDesign

Max queue

1class Solution:
2    def __init__(self):
3        self.queue = []
4        self.max = []
5
6    def enqueue(self, x):
7        self.queue.append(x)
8        while self.max and self.max[-1] < x: self.max.pop()
9        self.max.append(x)
10    
11    def dequeue(self):
12        res = self.queue.pop(0)
13        if res == self.max[0]: self.max.pop(0)
14        return res
15    
16    def max(self):
17        return self.max[0]