# -*- coding:utf-8 -*-
class Solution:
    def maxInWindows(self, num, size):
        if not num or size<=0 or size>len(num):
            return []
        stack = []
        res = []
        for i in range(min(size,len(num))):
            while stack and stack[-1]<num[i]:
                stack.pop()
            stack.append(num[i])
        res.append(stack[0])
#         print(stack)
        for j in range(size,len(num)):
            i = j - size
            if num[i] == stack[0]:
                stack.pop(0)
            while stack and stack[-1]<num[j]:
                stack.pop()
            stack.append(num[j])
            res.append(stack[0])
#             print(stack)
        return res