494。目標金額
難易度: 中
トピック: 配列、動的プログラミング、バックトラッキング
整数配列 nums と整数ターゲットが与えられます。
nums の各整数の前に記号 ' ' と '-' のいずれかを追加して、nums から 式 を構築し、すべての整数を連結したいとします。
ターゲットとして評価される、構築できるさまざまな 式 の数を返します。
例 1:
例 2:
制約:
解決策:
「ターゲット合計」問題では、配列 nums 内の数値を使用して式を作成し、各数値にまたは - 記号を割り当てます。目標は、指定されたターゲットに対して評価されるそのような式の数を計算することです。この問題は、動的プログラミングまたはバックトラッキングを使用して効率的に解決できます。
出力:
課題:
この問題は、動的プログラミング (サブセット合計変換) または バックトラッキング を使用して解決できます。以下では、効率化のために 動的プログラミング (DP) を使用します。
主な所見:
項を並べ替えます: sum(P) sum(N) = sum(nums)
S を正の部分集合の合計とします。次に、Sを実行します。 = (合計(数値) ターゲット) / 2
このソリューションを PHP で実装してみましょう: 494。目標金額
<?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 ?>
入力検証:
動的プログラミング ロジック:
結果:
入力: 数値 = [1, 1, 1, 1, 1]、ターゲット = 3
入力: 数値 = [1,1,1,1,1]、ターゲット = 3
出力: 5
このアプローチは、動的計画法を使用して目標合計を形成する方法の数を効率的に計算します。問題をサブセット合計に削減することで、DP の構造を活用してパフォーマンスを向上させます。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上が。目標金額の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。