题目
题解
def maxSlidingWindow(nums, k):
if not deque or k == 0:
return []
if len(nums) == 1 or k == 1:
return nums
# 存储数组的下标
queue = []
res = []
for i in range(len(nums)):
# 判断是否队列已满,需要清除左边的元素
if queue and queue[0] == i - k:
queue.pop(0)
# 如果现有队列里的数据比即将入队列的数据小,则直接清除
while queue and nums[queue[-1]] < nums[i]:
queue.pop()
# 新数入队列
queue.append(i)
# 更新最大数
res.append(nums[queue[0]])
return res
双端队列使用方式:python双端队列 collections.deque
题解:239题解