mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 08:50:15 +08:00
添加 0494.目标和(更新版,上一个跑不通了,因为会存在len小于0的情况)Go语言版本
添加 0494.目标和(更新版,上一个跑不通了,因为会存在len小于0的情况)Go语言版本
This commit is contained in:
@ -314,6 +314,47 @@ func findTargetSumWays(nums []int, target int) int {
|
|||||||
return dp[bag]
|
return dp[bag]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
> 更新版,上一个跑不通了,因为会存在len小于0的情况
|
||||||
|
|
||||||
|
```go
|
||||||
|
func findTargetSumWays(nums []int, target int) int {
|
||||||
|
//先转化为数学问题
|
||||||
|
//a-b=target
|
||||||
|
//a+b=sum
|
||||||
|
//a=(target+sum)/2
|
||||||
|
//求出sum
|
||||||
|
var sum int
|
||||||
|
for _,value:=range nums{
|
||||||
|
sum+=value
|
||||||
|
}
|
||||||
|
//如果sum<target或者 sum+target不是偶数(因为a是int) 或者两者之和小于0了
|
||||||
|
if sum<target||(sum+target)%2==1||(sum+target)<0{
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
//开始dp初始化
|
||||||
|
dp:=make([][]int,len(nums)+1)
|
||||||
|
for i:=0;i<=len(nums);i++{
|
||||||
|
tmp:=make([]int,(target+sum)/2+1)//背包容量
|
||||||
|
dp[i]=tmp
|
||||||
|
}
|
||||||
|
dp[0][0]=1//当背包容量为0,且物品为0时,填满背包就1种方法
|
||||||
|
for i:=0;i<len(nums)+1;i++{
|
||||||
|
if i==0{
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
for j:=0;j<(target+sum)/2+1;j++{
|
||||||
|
if nums[i-1]<=j{//如果背包装的下
|
||||||
|
dp[i][j]=dp[i-1][j]+dp[i-1][j-nums[i-1]]
|
||||||
|
}else{
|
||||||
|
dp[i][j]=dp[i-1][j]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dp[len(nums)][(target+sum)/2]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Javascript:
|
Javascript:
|
||||||
```javascript
|
```javascript
|
||||||
|
Reference in New Issue
Block a user