Menu
CoddyTech

Sliding Window Maximum

Ti viene dato un array di interi nums e una dimensione della finestra k. Una finestra copre k valori consecutivi. Inizia all’estremità sinistra dell’array e si sposta di una posizione verso destra alla volta, finché il suo bordo destro non raggiunge l’ultimo valore.

Restituisci un array con il valore più grande all’interno della finestra in ciascuna delle sue posizioni, da sinistra a destra. Un array di lunghezza n ha n-k+1 finestre, quindi il risultato contiene n-k+1 valori.

Funzione

maxSlidingWindow(nums: integer-array, k: integer) → integer-array
numsinteger-array
l’array su cui scorre la finestra
kinteger
il numero di valori in ogni finestra
Restituisceinteger-array
il valore più grande di ogni finestra, dalla finestra più a sinistra a quella più a destra

Vincoli

  • 1 ≤ k ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • Il risultato contiene nums.length-k+1 valori, uno per finestra, da sinistra a destra.

Esempi

Input
nums = [4, 2, 12, 3, 8, 5, 1]k = 3
Output
[12, 12, 12, 8, 8]
Spiegazione
12 si trova nelle prime tre finestre, [4, 2, 12], [2, 12, 3] e [12, 3, 8]. Dopo che scivola fuori, le finestre [3, 8, 5] e [8, 5, 1] hanno entrambe 8 come valore massimo.

lock icon+15 test nascosti all’invio

challenge icon

Per approfondire

Riesci a creare una coda che consenta di aggiungere un valore in fondo, rimuovere il valore in testa e leggere il suo massimo attuale, ciascuna operazione in tempo ammortizzato O(1)?

Ripristina il codice
def maxSlidingWindow(nums, k):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Caso 3

Input

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

Atteso

[12, 12, 12, 8, 8]