Menu
CoddyTech

Sliding Window Maximum

Recibes un arreglo de enteros nums y un tamaño de ventana k. Una ventana cubre k valores consecutivos. Empieza en el extremo izquierdo del arreglo y avanza una posición hacia la derecha cada vez, hasta que su borde derecho queda sobre el último valor.

Devuelve un arreglo con el valor más grande dentro de la ventana en cada una de sus posiciones, de izquierda a derecha. Un arreglo de longitud n tiene n-k+1 ventanas, por lo que el resultado tiene n-k+1 valores.

Función

maxSlidingWindow(nums: integer-array, k: integer) → integer-array
numsinteger-array
el arreglo sobre el que se desliza la ventana
kinteger
la cantidad de valores en cada ventana
Devuelveinteger-array
el valor más grande de cada ventana, de la ventana más a la izquierda a 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, en orden 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 tres primeras ventanas, [4, 2, 12], [2, 12, 3] y [12, 3, 8]. Después de que sale, las ventanas [3, 8, 5] y [8, 5, 1] tienen ambas 8 como su valor más grande.

lock icon+15 pruebas ocultas al enviar

challenge icon

Para ir más allá

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

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

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

[12, 12, 12, 8, 8]