双端队列的使用
from collections import deque
class Solution:
def maxInWindows(self , num: List[int], size: int) -> List[int]:
# write code here
res = []
len_num = len(num)
dq = deque()
for i in range(len_num):
if i <= size - 1:
while dq and num[dq[-1]] < num[i]:
dq.pop()
dq.append(i)
if i == size - 1:
res.append(num[dq[0]])
else:
# 当对尾下标对应的数组值小于新加入的对象时,删除队尾
while dq and (num[dq[-1]] < num[i]):
dq.pop()
# 当对头下标超出窗口的范围时,删除对头
while dq and (dq[0] < i - size + 1):
dq.popleft()
print(dq)
dq.append(i)
res.append(num[dq[0]])
return res