Menu
CoddyTech

Sliding Window Maximum

Du erhältst ein Array aus Ganzzahlen nums und eine Fenstergröße k. Ein Fenster aus k aufeinanderfolgenden Werten beginnt am linken Ende und bewegt sich jeweils um eine Position nach rechts, bis sein rechter Rand auf dem letzten Wert liegt. Gib an jeder Position von links nach rechts den größten Wert im Fenster zurück: n-k+1 Werte für ein Array der Länge n.

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 ganz linken Fenster bis zum ganz rechten

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 geordnet.

Beispiele

Eingabe
nums = [4, 2, 12, 3, 8, 5, 1]k = 3
Ausgabe
[12, 12, 12, 8, 8]
Erklärung
12 liegt in den ersten drei Fenstern, daher lautet die Antwort bei jedem davon 12. Nachdem es herausgeschoben wurde, haben sowohl [3, 8, 5] als auch [8, 5, 1] den größten Wert 8.
challenge icon

Weiterführende Frage

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

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

Test #1

Test #2

Test #3

Argumente

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

Erwartete Ausgabe

[12, 12, 12, 8, 8]