0
点赞
收藏
分享

微信扫一扫

494. 目标和(JavaScript)

彭维盛 2022-02-28 阅读 27
 //找到累加和为所有正数和
 //正数和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]
};
举报

相关推荐

0 条评论