3097. Kürzestes Subarray mit ODER mindestens K II
Schwierigkeit:Mittel
Themen: Array, Bitmanipulation, Schiebefenster
Sie erhalten eine Array-Anzahl von nichtnegativen Ganzzahlen und eine Ganzzahl k.
Ein Array heißt speziell, wenn das bitweise ODER aller seiner Elemente mindestens k.
istGib die Länge des kürzesten speziellen nicht leeren Subarrays1 von Zahlen zurück, oder gib -1 zurück, wenn kein spezielles Subarray vorhanden ist.
Beispiel 1:
Beispiel 2:
Beispiel 3:
Einschränkungen:
Hinweis:
Lösung:
Wir können einen Schiebefenster-Ansatz in Kombination mit Bitmanipulation verwenden, um die ODER-Verknüpfung von Elementen im Fenster zu verfolgen.
Lassen Sie uns diese Lösung in PHP implementieren: 3097. Kürzestes Subarray mit OR mindestens K II
minimumSubarrayLength($nums1, $k1) . "\n"; // Output: 1 $nums2 = [2, 1, 8]; $k2 = 10; echo $solution->minimumSubarrayLength($nums2, $k2) . "\n"; // Output: 3 $nums3 = [1, 2]; $k3 = 0; echo $solution->minimumSubarrayLength($nums3, $k3) . "\n"; // Output: 1 ?>Erläuterung:
minimumSubarrayLength-Methode:
- Ans auf einen unmöglich hohen Wert initialisieren ($n 1).
- Verwenden Sie zwei Zeiger l (links) und r (rechts), um das Fenster zu erweitern und zu verkleinern.
- Berechnen Sie das ODER des Subarrays, wenn Sie das Fenster mit orNum erweitern, und verkleinern Sie es mit undoOrNum, wenn Sie es verkleinern.
- Immer wenn das ODER-Ergebnis k erreicht oder überschreitet, prüfen Sie, ob die aktuelle Fenstergröße kleiner als ans ist.
orNum- und undoOrNum-Methoden:
- orNum-Methode: Fügt Bits zum kumulativen ODER hinzu, indem das Zählarray aktualisiert wird. Wenn ein Bit im Fenster neu gesetzt wird (was bedeutet, dass count[i] 1 wird), wird dieses Bit zu ors.
hinzugefügt- undoOrNum-Methode: Entfernt Bits aus dem kumulativen OR, wenn das Fenster nach links verschoben wird. Wenn in keiner der Zahlen im Fenster ein Bit mehr gesetzt ist (was bedeutet, dass count[i] 0 wird), wird dieses Bit aus ors entfernt.
Zeitkomplexität:
- Die zeitliche Komplexität beträgt O(n), da jeder Index höchstens einmal zur Deque hinzugefügt und daraus entfernt wird.
- n ist die Länge des Eingabearrays.
4*Zeitkomplexität*:
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:
Subarray: Ein Subarray ist eine zusammenhängende nicht leere Folge von Elementen innerhalb eines Arrays. ↩
Das obige ist der detaillierte Inhalt vonKürzestes Subarray mit OR von mindestens K II. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!