Menu
CoddyTech

Sliding Window Maximum

Você recebe um array de inteiros nums e um tamanho de janela k. Uma janela de k valores consecutivos começa na extremidade esquerda e se move uma posição para a direita de cada vez, até que sua extremidade direita fique sobre o último valor. Retorne o maior valor da janela em cada posição, da esquerda para a direita: n-k+1 valores para um array de comprimento n.

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, 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á dentro das três primeiras janelas, então cada uma delas retorna 12. Depois que ele sai, [3, 8, 5] e [8, 5, 1] têm 8 como seu maior valor.
challenge icon

Para ir além

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

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

Teste #1

Teste #2

Teste #3

Argumentos

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

Saída Esperada

[12, 12, 12, 8, 8]