JavaScript算法题-动态规划

91 阅读1分钟

198. 打家劫舍

image.png

题解

由于不可以在相邻的房屋闯入,所以在当前位置 n 房屋可盗窃的最大值,要么就是 n-1 房屋可盗窃的最大值,要么就是 n-2 房屋可盗窃的最大值加上当前房屋的值,二者之间取最大值

/**
 * @param {number[]} nums
 * @return {number}
 */
var rob = function(nums) {
    //比较索引奇数相加的和与索引偶数相加的和
    //不对 也有比如取索引1和4的情况
    //采用动态规划
   let dp=new Array(nums.length + 1)
   dp[0]=nums[0] 
   dp[1]=Math.max(nums[0],nums[1])
   for(let i=2 ; i < nums.length ; i++){
    dp[i] = Math.max(dp[i-1],dp[i-2]+nums[i])
   }
    return dp[nums.length-1]
};