2466. Zählen Sie Möglichkeiten, um gute Saiten zu bauen
Schwierigkeit:Mittel
Themen:Dynamische Programmierung
Angesichts der Ganzzahlen Null, Eins, Niedrig und Hoch können wir eine Zeichenfolge erstellen, indem wir mit einer leeren Zeichenfolge beginnen und dann bei jedem Schritt einen der folgenden Schritte ausführen:
Dies kann beliebig oft durchgeführt werden.
Eine gute Zeichenfolge ist eine Zeichenfolge, die durch den obigen Prozess erstellt wurde und eine Länge zwischen niedrig und hoch (einschließlich) aufweist.
Gibt die Anzahl der verschiedenen guten Strings zurück, die konstruiert werden können und diese Eigenschaften erfüllen. Da die Antwort groß sein kann, geben Sie sie modulo 109 7.
zurückBeispiel 1:
Beispiel 2:
Einschränkungen:
Hinweis:
Lösung:
Wir müssen uns darauf konzentrieren, Zeichenfolgen unterschiedlicher Länge zu konstruieren und die Anzahl gültiger Zeichenfolgen zu zählen, die die gegebenen Bedingungen erfüllen. Lassen Sie uns den Ansatz aufschlüsseln:
Staatsdefinition:
Lassen Sie dp[i] die Anzahl gültiger Zeichenfolgen der Länge i darstellen, die unter Verwendung der bereitgestellten Null- und Eins-Werte erstellt werden können.
Wiederholungsbeziehung:
Die Wiederholungsbeziehung wird:
dp[i] = dp[i – null] dpi – eins
Basisfall:
Endgültige Berechnung:
Lassen Sie uns diese Lösung in PHP implementieren: 2466. Zählen Sie Möglichkeiten, um gute Saiten zu bauen
Erläuterung:
Zeitkomplexität:
- Initialisierung: Wir beginnen damit, den Basisfall dp[0] = 1 festzulegen, was bedeutet, dass es eine Möglichkeit gibt, eine Zeichenfolge der Länge 0 (die leere Zeichenfolge) zu bilden.
- Aktualisierung der dynamischen Programmierung: Für jede mögliche String-Länge i von 1 bis hoch prüfen wir, ob wir einen String der Länge Null oder Eins an einen kleineren String anhängen können. Wir aktualisieren dp[i] entsprechend, indem wir die Anzahl der Möglichkeiten hinzufügen, eine Zeichenfolge der Länge i-null und i-eins zu bilden, um sicherzustellen, dass das Ergebnis modulo 109 7.
- Berechnung des Endergebnisses: Wir summieren alle Werte von dp[i] für i im Bereich [niedrig, hoch], um die endgültige Anzahl gültiger Zeichenfolgen zu erhalten.
** O(hoch) **, was für die Eingabegrenzen effizient genug ist.
Raumkomplexität:
Kontaktlinks
Wenn Sie diese Serie hilfreich fanden, denken Sie bitte darüber nach, demRepository 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 vonZählen Sie Möglichkeiten, um gute Saiten zu bauen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!