Categorías
Algorithms

LeetCode – Máximo de ventana deslizante (Java)

Dados los números de una matriz, hay una ventana deslizante de tamaño k que se mueve desde el extremo izquierdo de la matriz hacia la derecha. Solo puede ver los k números en la ventana. Cada vez que la ventana deslizante se mueve hacia la derecha una posición.

Solución Java

public int[] maxSlidingWindow(int[] nums, int k) {
    if(nums==null||nums.length==0)
        return new int[0];
 
    int[] result = new int[nums.length-k+1];
 
    LinkedList<Integer> deque = new LinkedList<Integer>();
    for(int i=0; i<nums.length; i++){
        if(!deque.isEmpty()&&deque.peekFirst()==i-k) 
            deque.poll();
 
        while(!deque.isEmpty()&&nums[deque.peekLast()]<nums[i]){
            deque.removeLast();
        }    
 
        deque.offer(i);
 
        if(i+1>=k)
            result[i+1-k]=nums[deque.peek()];
    }
 
    return result;
}

  LeetCode - Número entero a palabras en inglés (Java)

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *