Maximum Number within Window
public class Solution {
public List<Integer> maxWindows(int[] array, int k) {
List<Integer> result = new ArrayList<>();
Deque<Integer> deque = new ArrayDeque<>();
//Rule of deque
//new indexes come from below
//when new int coming in is greater than prev: remove prev smaller ones.
//when index is out of window, remove from top
for(int i = 0; i <array.length; i++){
while(!deque.isEmpty() && array[i] >= array[deque.peekLast()]){
deque.pollLast();
}
if(!deque.isEmpty() && deque.peekFirst() <= i - k){
deque.pollFirst();
}
deque.offerLast(i);
if (i >= k - 1) result.add(array[deque.peekFirst()]);
}
return result;
}
}
Last updated