利用双端队列,队列存放有可能成为最大数值数字的下标;
class Solution: def maxInWindows(self, num, size): # write code here i = 0 queue = [] res = [] while size > 0 and i < len(num): #i表示当前窗口中的最后一个数字下标 #判断queue[0]是否还在当前窗口中 if len(queue)>0 and i-size+1 > queue[0]: queue.pop(0) #如果有num[i]更大,那么目前队列中的队尾数字不可能成为最大值的下标,删除它 while len(queue)>0 and num[queue[-1]] < num[i]: queue.pop() queue.append(i) #i=size-1时,第一个窗口建立完成,开始记录最大下标 if i >= size - 1: res.append(num[queue[0]]) i += 1 return res