Menu
CoddyTech

Sliding Window Maximum

Você recebe um array de números inteiros nums e um tamanho de janela k. Uma janela cobre k valores consecutivos. Ela começa na extremidade esquerda do array e se move uma posição para a direita de cada vez, até que sua extremidade direita fique sobre o último valor.

Retorne um array com o maior valor dentro da janela em cada uma de suas posições, da esquerda para a direita. Um array de comprimento n tem n-k+1 janelas, então o resultado tem n-k+1 valores.

Função

maxSlidingWindow(nums: integer-array, k: integer) → integer-array
numsinteger-array
a matriz sobre a qual a janela desliza
kinteger
o número de valores em cada janela
Retornainteger-array
o maior valor de cada janela, da janela mais à esquerda até a mais à direita

Restrições

  • 1 ≤ k ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • O resultado contém nums.length-k+1 valores, um por janela, em ordem da esquerda para a direita.

Exemplos

Entrada
nums = [4, 2, 12, 3, 8, 5, 1]k = 3
Saída
[12, 12, 12, 8, 8]
Explicação
12 está nas três primeiras janelas, [4, 2, 12], [2, 12, 3] e [12, 3, 8]. Depois que ele sai da janela, as janelas [3, 8, 5] e [8, 5, 1] têm 8 como seu maior valor.

lock icon+15 testes ocultos ao enviar

challenge icon

Para ir além

Você consegue criar uma fila que permita adicionar um valor no final, remover o valor do início e consultar seu máximo atual, cada operação em tempo amortizado O(1)?

Redefinir código
def maxSlidingWindow(nums, k):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

[12, 12, 12, 8, 8]