//找到累加和为所有正数和
//正数和sp=(目标值+数组总和)/2
//找到装满sp背包的所有可能
//dp[j]+=dp[j-nums[i]]
//dp的长度取决于背包容量的大小
var findTargetSumWays = function(nums, target) {
let sum=nums.reduce((a,b)=>a+b)
if((sum+target)%2==1){
return 0
}
if(Math.abs(target)>sum){
return 0
}
let sp=(sum+target)/2 //背包容量
let len=nums.length
let dp=new Array(sp+1).fill(0)
//累加:需要注意第一个值为1
dp[0]=1
for(let i=0;i<len;i++){ //遍历下标
for(let j=sp;j>=nums[i];j--){ //遍历背包剩余空间
dp[j]+=dp[j-nums[i]]
}
}
return dp[sp]
};
494. 目标和(JavaScript)
最新推荐文章于 2024-08-23 11:46:54 发布