494. 目標和
給定乙個非負整數陣列,a1, a2, …, an, 和乙個目標數,s。現在你有兩個符號 + 和 -。對於陣列中的任意乙個整數,你都可以從 + 或 -中選擇乙個符號新增在前面。
返回可以使最終陣列和為目標數 s 的所有新增符號的方法數。
示例 1:
輸入: nums: [1, 1, 1, 1, 1], s: 3
輸出: 5
解釋:-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3
一共有5種方法讓最終目標和為3。
注意:陣列非空,且長度不會超過20。
初始的陣列的和不會超過1000。
保證返回的最終結果能被32位整數存下。
func
findtargetsumways
(nums [
]int
, s int
)int
sum:=
0for i:=
0;i<
len(nums)
;i++
// 1.恆不成立條件1
if sum < s
// 2.恆不成立條件2
sum+=s
if sum%2!=
0 dp:=
make([
]int
,sum/2+
1)dp[0]
=1// 因此只要找到乙個子集,令它們都取正號,並且和等於 (target + sum(nums))/2,就證明存在解
for i:=
0;i<
len(nums)
;i++
}return dp[sum/2]
}
leetcode 494 目標和(DP 動態規劃)
給定乙個非負整數陣列,a1,a2,an,和乙個目標數,s。現在你有兩個符號 和 對於陣列中的任意乙個整數,你都可以從 或 中選擇乙個符號新增在前面。返回可以使最終陣列和為目標數 s 的所有新增符號的方法數。本題是典型的 動態規劃 問題。設陣列的長度為n,當陣列的前n 1項 nums 0 到nums ...
494 目標和 力扣
題意理解 給定一陣列,在每個數前增加 符號構成表示式,求和等於s的數量。問題分析 動規狀態量是前i個數字,和等於j的數量。狀態轉移方程是前i個數字,和等於j的數量等於前i 1個數字,和等於j 當前數字的數量 前i 1個數字,和等於j 當前數字的數量。其他鏈結 int findtargetsumway...
01揹包3 目標和494
給定乙個非負整數陣列,a1,a2,an,和乙個目標數,s。現在你有兩個符號 和 對於陣列中的任意乙個整數,你都可以從 或 中選擇乙個符號新增在前面。返回可以使最終陣列和為目標數 s 的所有新增符號的方法數。這個題的選擇就兩種,做加法或者做減法 不能選擇不加 所以其實是乙個動態規劃.又因為需要達到s,...