package sort;
import java.util.*;
public class Test59 {
public static void main(String[] args) {
System.out.println(maxInWindows(new int[] { 2, 3, 4, 2, 6, 2, 5, 1 }, 3));
}
public static ArrayList<Integer> maxInWindows(int[] num, int size) {
ArrayList<Integer> list = new ArrayList<Integer>();
if (size <= 0)
return list;
Deque<Integer> deque = new LinkedList<Integer>();
for (int i = 0; i < num.length; i++) {
while (!deque.isEmpty() && num[deque.getLast()] < num[i]) {
deque.removeLast();
}
deque.addLast(i);
while (!deque.isEmpty() && deque.getFirst() <= i - size) {
deque.removeFirst();
}
if (i >= size - 1)
list.add(num[deque.getFirst()]);
System.out.println(deque);
}
return list;
}
}