494。目標金額
難度:中
主題:陣列、動態規劃、回溯
給你一個整數陣列 nums 和一個整數目標。
您想要透過在 nums 中的每個整數之前加上符號 ' ' 和 '-' 之一,然後連接所有整數來建立 nums 中的 表達式。
傳回您可以建立的不同表達式的數量,其計算結果為目標。
範例1:
範例2:
約束:
解:
「目標和」問題涉及透過為每個數字分配一個或 - 符號,使用數組 nums 中的數字建立表達式。目標是計算有多少個此類表達式計算結果為給定目標。這個問題可以使用動態規劃或回溯來有效解決。
輸出:
挑戰:
我們可以用動態規劃(子集和變換)或回溯來解決這個問題。下面,我們使用動態規劃(DP)來提高效率。
主要觀察結果:
重新排列項: sum(P) sum(N) = sum(nums)
設 S 為正子集的總和。然後:S = (sum(nums) 目標) / 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 ?>
輸入驗證:
動態程式邏輯:
結果:
輸入: nums = [1, 1, 1, 1, 1], target = 3
輸入: nums = [1,1,1,1,1], target = 3
輸出:5
這種方法使用動態規劃有效地計算形成目標總和的方法數量。透過將問題簡化為子集和,我們利用 DP 的結構來獲得更好的效能。
聯絡連結
如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
以上是。目標總和的詳細內容。更多資訊請關注PHP中文網其他相關文章!