题目:原题链接(中等)
标签:队列、设计、滑动窗口
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
Ans 1 (Python) | O ( 1 ) | O ( N ) | 328ms (38.65%) |
Ans 2 (Python) | |||
Ans 3 (Python) |
解法一(双队列实现):
class MaxQueue:
def __init__(self):
self.queue = collections.deque() # 数据存储队列
self.most_queue = collections.deque() # 最大值队列
def max_value(self) -> int:
return self.most_queue[0] if self.most_queue else -1
def push_back(self, value: int) -> None:
while self.most_queue and self.most_queue[-1] < value:
self.most_queue.pop()
self.most_queue.append(value)
self.queue.append(value)
def pop_front(self) -> int:
if not self.queue:
return -1
value = self.queue.popleft()
if value == self.most_queue[0]:
self.most_queue.popleft()
return value