862. Kürzestes Subarray mit einer Summe von mindestens K
Schwierigkeit:Schwer
Themen: Array, Binäre Suche, Warteschlange, Schiebefenster, Heap (Prioritätswarteschlange), Präfixsumme, Monotone Warteschlange
Angenommen ein ganzzahliges Array nums und eine ganze Zahl k, geben Sie die Länge des kürzesten nichtleeren Unterarrays von nums mit einer Summe von mindestens k zurück. Wenn es kein solches Subarray gibt, geben Sie -1 zurück.
Ein Subarray ist ein zusammenhängender Teil eines Arrays.
Beispiel 1:
Beispiel 2:
Beispiel 3:
Einschränkungen:
Lösung:
Wir müssen einen Schiebefenster-Ansatz in Kombination mit Präfixsummen und einer monotonen Warteschlange verwenden. Hier ist die Schritt-für-Schritt-Anleitung:
Präfixsumme:
Monotonische Warteschlange:
Schiebefensterlogik:
Lassen Sie uns diese Lösung in PHP implementieren: 862. Kürzestes Subarray mit einer Summe von mindestens K
Erläuterung:
Präfix-Summen-Array:
- Wir berechnen die kumulative Summe des Arrays im Array prefix_sum. Dies hilft bei der Berechnung der Summe aller Subarrays nums[i...j] mithilfe der Formel prefix_sum[j 1] - prefix_sum[i].
Monotonische Warteschlange:
- Die Deque enthält Indizes des prefix_sum-Arrays in aufsteigender Reihenfolge der Werte. Wir behalten diese Reihenfolge bei, damit wir effizient das kleinste Subarray finden können, dessen Summe größer oder gleich k ist.
Schiebefensterlogik:
- Während wir das prefix_sum-Array durchlaufen, versuchen wir, das kleinste Subarray zu finden, indem wir die Differenz zwischen dem aktuellen prefix_sum[i] und dem vorherigen prefix_sum[deque[0]] verwenden.
- Wenn die Differenz größer oder gleich k ist, berechnen wir die Subarray-Länge und aktualisieren die gefundene Mindestlänge.
Zurückgegebenes Ergebnis:
- Wenn kein gültiges Subarray gefunden wird, geben Sie -1 zurück. Andernfalls wird die minimale Subarray-Länge zurückgegeben.
Zeitkomplexität:
Dieser Ansatz stellt sicher, dass die Lösung auch bei großen Eingaben effizient läuft.
Kontaktlinks
Wenn Sie diese Serie hilfreich fanden, denken Sie bitte darüber nach, dem Repository einen Stern auf GitHub zu geben oder den Beitrag in Ihren bevorzugten sozialen Netzwerken zu teilen? Ihre Unterstützung würde mir sehr viel bedeuten!
Wenn Sie weitere hilfreiche Inhalte wie diesen wünschen, folgen Sie mir gerne:
Das obige ist der detaillierte Inhalt von. Kürzestes Subarray mit einer Summe von mindestens K. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!