494 目標和 golang 動態規劃

2021-10-03 19:55:59 字數 928 閱讀 7789

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,...