A Título: máximo de la cola : Dado un tamaño de la matriz y de la ventana deslizante, averiguar el máximo de todos ventana deslizante
método: una abertura prevista en ambos índice de ventana extremos de la cola de almacenamiento máximo; cada ventana es la corriente de cabeza de la máxima valor,
cuando la ventana deslizante; un elemento nuevo en el equipo, el equipo es más pequeño de lo que se suprimiría
Nombre deque es "cola doblemente terminada (deque)" Término
El ArrayList <Integer> MaxInWindows1 ( int [] NUM, int tamaño) { ArrayList <Integer> = Lista nuevo nuevo ArrayList <Integer> (); ArrayDeque <Integer> = Q nueva nueva ArrayDeque <Integer> (); SI (NUM == nula | | tamaño <= 0 ) de retorno Lista; // bucle a través de la matriz, el subíndice de matriz añadido a la cola para ( int i = 0; I <num.length; I ++ ) { IF (q.isEmpty ()) { q.add (I); } //El elemento actual número de índice y la cola de procesamiento de la mayor diferencia de primera fase que o igual al tamaño de la ventana deslizante IF (I - q.peekFirst ()> = tamaño) { q.pollFirst (); // aparecido desde la cola de primera elemento } // el número actualmente procesado que el índice último elemento de la cola se asigna a un gran número al mismo tiempo (! q.isEmpty () && NUM [I]> = NUM [q.peekLast ()]) { q.pollLast ( ); // pop último elemento de la cola } q.add (I); // cola se añade al índice de matriz // primer máximo comienzo a número de cola índice elemento añadido a la lista correspondiente a IF (I> = -size 1. ) { List.add (NUM [q.peekFirst ()]); } } retorno } Lista;