0
点赞
收藏
分享

微信扫一扫

可视化绘图技巧100篇分析篇(二)-生存曲线(LM曲线)(补充篇)

198.打家劫舍

var rob = function(nums) {
    //数组问题   动态规划   nums[i]是下标为i的数组之前的 可以盗取的最大金额
    let dp = []
    let n = nums.length
    dp[0] = nums[0]
    dp[1] = Math.max(nums[0],nums[1])
    for(let i=2;i<n;i++){
        //取  盗取当前的结点 和 不盗取当前节点  二者的最大值
        dp[i] = Math.max(dp[i-2]+nums[i],dp[i-1])
    }
    return dp[n-1]
};

213.打家劫舍2

var rob = function(nums) {
    //这题比上一个多了一个限定条件  所有的房屋围成了一个圈
    //第一个和最后一个不能同时出现
    let n = nums.length
    if(n==0) return 0
    if(n==1) return nums[0]
    let dp1 = []
    let dp2 = []
    //不包含第一个  队列从 1 到 n-1
    dp1[1] = nums[1]
    dp1[2] = Math.max(nums[1],nums[2])
    for(let i = 3;i<=n-1;i++){
        dp1[i] = Math.max(nums[i]+dp1[i-2],dp1[i-1])
    }
    //包含第一个   队列从 0 到 n-2   
    dp2[0] = nums[0]
    dp2[1] = Math.max(nums[0],nums[1])
    for(let j=2;j<=n-2;j++){
        dp2[j] = Math.max(nums[j]+dp2[j-2],dp2[j-1])
    }
    return Math.max(dp1[n-1],dp2[n-2])
};
举报

相关推荐

0 条评论