Menu
CoddyTech

Sliding Window Maximum

Recibes un arreglo de enteros nums y un tamaño de ventana k. Una ventana de k valores consecutivos comienza en el extremo izquierdo y se desplaza una posición hacia la derecha cada vez, hasta que su borde derecho queda sobre el último valor. Devuelve el valor más grande de la ventana en cada posición, de izquierda a derecha: n-k+1 valores para un arreglo de longitud n.

Función

maxSlidingWindow(nums: integer-array, k: integer) → integer-array
numsinteger-array
el arreglo sobre el que se desliza la ventana
kinteger
el número de valores en cada ventana
Devuelveinteger-array
el valor más grande de cada ventana, desde la ventana más a la izquierda hasta la más a la derecha

Restricciones

  • 1 ≤ k ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • El resultado contiene nums.length-k+1 valores, uno por ventana, de izquierda a derecha.

Ejemplos

Entrada
nums = [4, 2, 12, 3, 8, 5, 1]k = 3
Salida
[12, 12, 12, 8, 8]
Explicación
12 está dentro de las primeras tres ventanas, así que cada una devuelve 12. Después de que se desliza hacia afuera, [3, 8, 5] y [8, 5, 1] tienen ambas 8 como su valor más grande.
challenge icon

Para ir más allá

¿Puedes construir una cola que permita añadir un valor al final, eliminar el valor del frente y consultar su máximo actual, cada una en tiempo amortizado O(1)?

Restablecer código
def maxSlidingWindow(nums, k):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumentos

nums = [4, 2, 12, 3, 8, 5, 1]
k = 3

Salida Esperada

[12, 12, 12, 8, 8]