File tree Expand file tree Collapse file tree 2 files changed +55
-1
lines changed Expand file tree Collapse file tree 2 files changed +55
-1
lines changed Original file line number Diff line number Diff line change @@ -276,7 +276,35 @@ class Solution:
276
276
```
277
277
278
278
Go:
279
-
279
+ ``` go
280
+ func findTargetSumWays (nums []int , target int ) int {
281
+ sum := 0
282
+ for _ , v := range nums {
283
+ sum += v
284
+ }
285
+ if target > sum {
286
+ return 0
287
+ }
288
+ if (sum+target)%2 == 1 {
289
+ return 0
290
+ }
291
+ // 计算背包大小
292
+ bag := (sum + target) / 2
293
+ // 定义dp数组
294
+ dp := make ([]int , bag+1 )
295
+ // 初始化
296
+ dp[0 ] = 1
297
+ // 遍历顺序
298
+ for i := 0 ; i < len (nums); i++ {
299
+ for j := bag; j >= nums[i]; j-- {
300
+ // 推导公式
301
+ dp[j] += dp[j-nums[i]]
302
+ // fmt.Println(dp)
303
+ }
304
+ }
305
+ return dp[bag]
306
+ }
307
+ ```
280
308
281
309
282
310
Original file line number Diff line number Diff line change @@ -191,7 +191,33 @@ class Solution:
191
191
```
192
192
193
193
Go:
194
+ ``` go
195
+ func lastStoneWeightII (stones []int ) int {
196
+ // 15001 = 30 * 1000 /2 +1
197
+ dp := make ([]int , 15001 )
198
+ // 求target
199
+ sum := 0
200
+ for _ , v := range stones {
201
+ sum += v
202
+ }
203
+ target := sum / 2
204
+ // 遍历顺序
205
+ for i := 0 ; i < len (stones); i++ {
206
+ for j := target; j >= stones[i]; j-- {
207
+ // 推导公式
208
+ dp[j] = max (dp[j], dp[j-stones[i]]+stones[i])
209
+ }
210
+ }
211
+ return sum - 2 * dp[target]
212
+ }
194
213
214
+ func max (a , b int ) int {
215
+ if a > b {
216
+ return a
217
+ }
218
+ return b
219
+ }
220
+ ```
195
221
196
222
197
223
You can’t perform that action at this time.
0 commit comments