Heim > Artikel > Backend-Entwicklung > Finden Sie heraus, ob das Array sortiert werden kann
3011. Finden Sie heraus, ob das Array sortiert werden kann
Schwierigkeit:Mittel
Themen: Array, Bitmanipulation, Sortierung
Sie erhalten ein 0-indiziertes Array von positiven ganzen Zahlen.
In einem Vorgang können Sie zwei beliebige benachbarte Elemente austauschen, wenn sie die gleiche Anzahl gesetzter Bits1 haben. Sie dürfen diesen Vorgang beliebig oft ausführen (einschließlich null).
Gib true zurück, wenn du das Array sortieren kannst, sonst gib false zurück.
Beispiel 1:
Beispiel 2:
Beispiel 3:
Beispiel 4:
Einschränkungen:
Hinweis:
Lösung:
Wir müssen feststellen, ob das Array sortiert werden kann, indem nur benachbarte Elemente ausgetauscht werden, die in ihrer Binärdarstellung die gleiche Anzahl gesetzter Bits haben. Hier ist der Plan:
Schlüsselbeobachtung: Die Operation ermöglicht es uns, benachbarte Elemente nur dann auszutauschen, wenn sie die gleiche Anzahl gesetzter Bits haben. Dadurch wird der Austausch zwischen Elementen mit unterschiedlicher Anzahl gesetzter Bits eingeschränkt.
Planen:
Schritte:
Lassen Sie uns diese Lösung in PHP implementieren: 3011. Finden Sie heraus, ob das Array sortiert werden kann
Erläuterung:
- CountSetBits-Funktion: Zählt die Anzahl der gesetzten Bits in einer Zahl mithilfe bitweiser Operationen.
- Gruppierungselemente: bitGroups ist ein assoziatives Array, bei dem jeder Schlüssel die festgelegte Bitanzahl darstellt und jeder Wert ein Zahlenarray mit so vielen gesetzten Bits ist.
Sortieren und Neuaufbau:
- Wir iterieren über Nummern, um Elemente nach ihrer festgelegten Bitanzahl zu gruppieren.
- Wir sortieren jede Gruppe einzeln.
- Wir rekonstruieren dann das Array, indem wir jedes sortierte Gruppenelement in seiner ursprünglichen Reihenfolge einfügen.
- Zuletzt prüfen wir, ob das rekonstruierte Array in nicht absteigender Reihenfolge sortiert ist. Wenn ja, geben Sie true zurück. Andernfalls geben Sie false zurück.
Endgültiger Vergleich: Vergleichen Sie das neu erstellte Array mit einer vollständig sortierten Version von Nums. Wenn sie übereinstimmen, wird „true“ zurückgegeben. andernfalls wird false zurückgegeben.
Komplexitätsanalyse
Diese Lösung stellt sicher, dass wir nur benachbarte Elemente mit der gleichen eingestellten Bitanzahl austauschen und möglichst eine sortierte Reihenfolge erreichen.
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:
Bit setzen Ein gesetztes Bit bezieht sich auf ein Bit in der binären Darstellung einer Zahl, das den Wert 1 hat. ↩
Das obige ist der detaillierte Inhalt vonFinden Sie heraus, ob das Array sortiert werden kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!