1652. Entschärfe die Bombe
Schwierigkeit:Einfach
Themen:Array, Schiebefenster
Sie müssen eine Bombe entschärfen und Ihre Zeit wird knapp! Ihr Informant wird Ihnen einen zirkulären Array-Code mit der Länge n und einem Schlüssel k.
zur Verfügung stellenUm den Code zu entschlüsseln, müssen Sie jede Zahl ersetzen. Alle Zahlen werden gleichzeitig ersetzt.
Da der Code zirkulär ist, ist das nächste Element von Code[n-1] Code[0] und das vorherige Element von Code[0] ist Code[n-1].
Angesichts des zirkulären Array-Codes und eines ganzzahligen Schlüssels k, gib den entschlüsselten Code zurück, um die Bombe zu entschärfen!
Beispiel 1:
Beispiel 2:
Beispiel 3:
Einschränkungen:
Hinweis:
Lösung:
Wir können eine Funktion implementieren, die das Code-Array durchläuft und die Summe der entsprechenden Zahlen basierend auf dem Wert von k berechnet.
Der allgemeine Ansatz wird wie folgt sein:
Die kreisförmige Natur des Arrays bedeutet, dass Sie für Indizes, die die Grenzen des Arrays überschreiten, Modulo (%) verwenden können, um das Array zu „umschließen“.
Lassen Sie uns diese Lösung in PHP implementieren: 1652. Entschärfe die Bombe
Erläuterung:
Initialisierung:
- Wir erstellen mit array_fill.
ein Ergebnisarray, das mit Nullen initialisiert wirdHandhabung von k == 0:
- Wenn k Null ist, wird das Ausgabearray einfach mit Nullen gefüllt, wie es das Problem erfordert.
Durchlaufen des Arrays:
- Für jeden Index i im Array:
- Wenn k > 0, summieren Sie die nächsten k Elemente mithilfe der Modulo-Arithmetik, um sie zu umschließen.
- Wenn k < 0, summiere das vorherige |k| Elemente, die Modulo-Arithmetik mit einem Offset verwenden, um negative Indizes zu verarbeiten.
Modulo-Arithmetik:
- Wir verwenden ($i $j) % $n, um beim Zugriff auf Indizes größer als n - 1 zum Anfang des Arrays zu springen.
- In ähnlicher Weise übernimmt ($i - $j $n) % $n den Rückwärtsumbruch für negative Indizes.
Komplexität:
- Zeitkomplexität: O(n . |k|), wobei n die Größe des Arrays ist und |k| ist der absolute Wert von k.
- Raumkomplexität: O(n) für das Ergebnisarray.
Ausgänge:
Die bereitgestellten Beispiele stimmen mit den erwarteten Ergebnissen überein. Lassen Sie mich wissen, wenn Sie weitere Erklärungen oder Optimierungen benötigen!
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 vonEntschärfe die Bombe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!