Skip to content

Commit 317916f

Browse files
Merge pull request #312 from zhangzw001/master
添加0494.目标和 and 1049.最后一块石头的重量II Go版本
2 parents f241b0a + 9f84671 commit 317916f

File tree

2 files changed

+55
-1
lines changed

2 files changed

+55
-1
lines changed

problems/0494.目标和.md

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,35 @@ class Solution:
276276
```
277277

278278
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+
```
280308

281309

282310

problems/1049.最后一块石头的重量II.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,33 @@ class Solution:
191191
```
192192

193193
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+
}
194213

214+
func max(a, b int) int {
215+
if a > b {
216+
return a
217+
}
218+
return b
219+
}
220+
```
195221

196222

197223

0 commit comments

Comments
 (0)