2601. Primzahlsubtraktionsoperation
Schwierigkeit:Mittel
Themen: Array, Mathematik, Binäre Suche, Greedy, Zahlentheorie
Sie erhalten ein 0-indiziertes ganzzahliges Array mit Zahlen der Länge n.
Sie können den folgenden Vorgang beliebig oft ausführen:
Gib true zurück, wenn du nums mithilfe der obigen Operation zu einem strikt ansteigenden Array machen kannst, andernfalls false.
Ein streng ansteigendes Array ist ein Array, dessen jedes Element streng größer als sein vorhergehendes Element ist.
Beispiel 1:
Beispiel 2:
Beispiel 3:
Einschränkungen:
Hinweis:
Lösung:
Wir müssen den Algorithmus aufschlüsseln und an die PHP-Syntax und -Funktionalität anpassen. Die Lösung umfasst im Wesentlichen die folgenden Schritte:
Lassen Sie uns diese Lösung in PHP implementieren: 2601. Primzahlsubtraktionsoperation
primeSubOperation([4, 9, 6, 10]) ? 'true' : 'false'; // Output: true echo $solution->primeSubOperation([6, 8, 11, 12]) ? 'true' : 'false'; // Output: true echo $solution->primeSubOperation([5, 8, 3]) ? 'true' : 'false'; // Output: false ?>Erläuterung:
primeSubOperation: Durchläuft jedes Element in Zahlen und prüft, ob wir jedes Element durch Subtrahieren einer entsprechenden Primzahl größer als das vorherige machen können.
- Wir verwenden $this->findLargestPrimeLessThan, um die größte Primzahl kleiner als num zu finden – prevNum.
- Wenn eine solche Primzahl existiert, subtrahieren wir sie von der aktuellen Zahl.
- Wenn nach dem Subtrahieren der Primzahl die aktuelle Zahl nicht größer als prevNum ist, geben wir false zurück.
- Andernfalls aktualisieren wir prevNum auf die aktuelle Nummer.
SiebEratosthenes: Erzeugt alle Primzahlen bis 1000 mit dem Sieb des Eratosthenes und gibt sie als Array zurück.
findLargestPrimeLessThan: Verwendet die binäre Suche, um die größte Primzahl zu finden, die kleiner als ein gegebener Grenzwert ist, und stellt so sicher, dass wir die optimale Primzahl für die Subtraktion finden.
Komplexitätsanalyse
Diese Lösung gibt „true“ oder „false“ zurück, je nachdem, ob es möglich ist, Zahlen durch Ausführen der beschriebenen Primzahlsubtraktionsoperationen streng ansteigend zu machen.
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 vonPrimzahlsubtraktionsoperation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!