494. Zielsumme
Schwierigkeit:Mittel
Themen:Array, Dynamische Programmierung, Backtracking
Sie erhalten ein Integer-Array nums und ein Integer-Ziel.
Sie möchten einen Ausdruck aus Zahlen erstellen, indem Sie vor jeder Ganzzahl in Zahlen eines der Symbole „ “ und „-“ hinzufügen und dann alle Ganzzahlen verketten.
Gibt die Anzahl der verschiedenen Ausdrücke zurück, die Sie erstellen können und die als Ziel ausgewertet werden.
Beispiel 1:
Beispiel 2:
Einschränkungen:
Lösung:
Das Problem „Zielsumme“ besteht darin, Ausdrücke mithilfe der Zahlen in einem Array zu erstellen, indem jeder Zahl ein Oder-Zeichen zugewiesen wird. Das Ziel besteht darin, zu berechnen, wie viele solcher Ausdrücke für das gegebene Ziel ausgewertet werden. Dieses Problem kann durch dynamische Programmierung oder Backtracking effizient gelöst werden.
Ausgabe:
Herausforderungen:
Wir können dieses Problem mithilfe von Dynamischer Programmierung (Subset Sum Transformation) oder Backtracking lösen. Im Folgenden verwenden wir Dynamic Programming (DP) für mehr Effizienz.
Wichtige Beobachtungen:
Begriffe neu anordnen: sum(P) sum(N) = sum(nums)
Es sei S die Summe der positiven Teilmenge. Dann: S = (sum(nums) target) / 2
Lassen Sie uns diese Lösung in PHP implementieren: 494. Zielsumme
<?php /** * @param Integer[] $nums * @param Integer $target * @return Integer */ function findTargetSumWays($nums, $target) { ... ... ... /** * go to ./solution.php */ } // Example usage: $nums = [1, 1, 1, 1, 1]; $target = 3; echo findTargetSumWays($nums, $target); // Output: 5 ?>
Eingabevalidierung:
Dynamische Programmierlogik:
Ergebnis:
Eingabe: nums = [1, 1, 1, 1, 1], Ziel = 3
Eingabe: nums = [1,1,1,1,1], Ziel = 3
Ausgabe: 5
Dieser Ansatz berechnet mithilfe dynamischer Programmierung effizient die Anzahl der Möglichkeiten zur Bildung der Zielsumme. Indem wir das Problem auf die Teilmengensumme reduzieren, nutzen wir die Struktur von DP für eine bessere Leistung.
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 von. Zielsumme. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!