题目描述
方法:
辅助队列,非严格递减,保存最大值
class MaxQueue:
def __init__(self):
self.queue = collections.deque()
self.sub_queue = []
def max_value(self) -> int:
if self.sub_queue:
return self.sub_queue[0]
else:
return -1
def push_back(self, value: int) -> None:
self.queue.append(value)
while self.sub_queue and self.sub_queue[-1] < value:
self.sub_queue.pop()
self.sub_queue.append(value)
def pop_front(self) -> int:
if self.queue:
a = self.queue.popleft()
if self.sub_queue and a == self.sub_queue[0]:
self.sub_queue.pop(0)
return a
else:
return -1