JAVA 代码
public int[] maxInWindows(int[] a, int m) {
int[] res = new int[a.length-m+1];
int index = 0;
Deque<Integer> q = new LinkedList<Integer>();
for (int i = 0; i<a.length; i++){
if (!q.isEmpty() && q.getFirst() < i - m + 1)
q.removeFirst();
while (!q.isEmpty() && a[q.getLast()] <= a[i])
q.removeLast();
q.addLast(i);
if (i - m + 1>=0)
res[index++]=a[q.getFirst()];
}
return res;
}