import java.util.*;
public class Solution {
public ArrayList<Integer> maxInWindows(int [] num, int size) {
ArrayList<Integer> list = new ArrayList<Integer>();
if (size == 0 || num.length == 0 || size > num.length) {
return list;
}
int left = 0, right = 0;
PriorityQueue<Integer> queue = new PriorityQueue<Integer>
(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
for (; right < size; right++) {
queue.add(num[right]);
}
list.add(queue.peek());
while (right < num.length) {
queue.remove(num[left]);
queue.add(num[right]);
list.add(queue.peek());
left++;
right++;
}
return list;
}
}