# -*- 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