import collections
#
  解题思路: htt****************************liding-window-maximum/description/

# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
# 
# 
# @param num int整型一维数组 
# @param size int整型 
# @return int整型一维数组
#
class Solution:
    def maxInWindows(self , num: List[int], size: int) -> List[int]:
        # write code here
        if  size==0 or len(num)==0:
            return []
        # 1.定义一个队列存下标
        dq=collections.deque()
        n=len(num)
        res=[]
        for i ,number in enumerate(num):
            while dq and num[dq[-1]]<number:
                dq.pop()  # 移除下标
            # 添加到队列
            dq.append(i)  # 加入下标
            if i-size==dq[0]:
                dq.popleft()
            if i>=size-1:
                #print(i,dq)
                res.append(num[dq[0]])
        return res