第一个hard
class MyQueue:
def __init__(self):
# 使用deque()实现单调队列
self.queue = deque()
def pop(self, value):
# 如果队列第一个元素与窗口要丢弃的值相同,则删除队列中第一个元素
if self.queue and value == self.queue[0]:
self.queue.popleft()
def push(self, value):
# 将要push到队列中的元素大于队列入口元素,将队列入口值弹出,直到队列入口的元素大于等于被push的值
while self.queue and value > self.queue[-1]:
self.queue.pop()
self.queue.append(value)
def front(self):
return self.queue[0]
class Solution(object):
def maxSlidingWindow(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: List[int]
"""
res = []
que = MyQueue()
for i in range(k):
que.push(nums[i])
res.append(que.front())
for i in range(k, len(nums)):
que.pop(nums[i - k ])
que.push(nums[i])
res.append(que.front())
return res