Menu
CoddyTech

Sliding Window Maximum

Du erhältst ein Array von ganzen Zahlen nums und eine Fenstergröße k. Ein Fenster umfasst k aufeinanderfolgende Werte. Es beginnt am linken Ende des Arrays und bewegt sich jeweils um eine Position nach rechts, bis seine rechte Kante beim letzten Wert liegt.

Gib ein Array mit dem größten Wert innerhalb des Fensters an jeder seiner Positionen von links nach rechts zurück. Ein Array der Länge n hat n-k+1 Fenster, daher enthält das Ergebnis n-k+1 Werte.

Funktion

maxSlidingWindow(nums: integer-array, k: integer) → integer-array
numsinteger-array
das Array, über das das Fenster gleitet
kinteger
die Anzahl der Werte in jedem Fenster
Gibt zurückinteger-array
der größte Wert jedes Fensters, vom linkesten Fenster bis zum rechtesten

Einschränkungen

  • 1 ≤ k ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • Das Ergebnis enthält nums.length-k+1 Werte, einen pro Fenster, von links nach rechts angeordnet.

Beispiele

Eingabe
nums = [4, 2, 12, 3, 8, 5, 1]k = 3
Ausgabe
[12, 12, 12, 8, 8]
Erklärung
12 befindet sich in den ersten drei Fenstern: [4, 2, 12], [2, 12, 3] und [12, 3, 8]. Nachdem es herausgeschoben wurde, ist 8 in den Fenstern [3, 8, 5] und [8, 5, 1] jeweils der größte Wert.

lock icon+15 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Kannst du eine Warteschlange erstellen, die in amortisierter Zeit von jeweils O(1) das Hinzufügen eines Werts am Ende, das Entfernen des Werts am Anfang und das Auslesen ihres aktuellen Maximums unterstützt?

Code zurücksetzen
def maxSlidingWindow(nums, k):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

[12, 12, 12, 8, 8]