198.打家劫舍

思路

标签:动态规划

动态规划方程:dp[n] = MAX( dp[n-1], dp[n-2] + num )

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

举例来说:1 号房间可盗窃最大值为 33 即为 dp[1]=3,2 号房间可盗窃最大值为 44 即为 dp[2]=4,3 号房间自身的值为 22 即为 num=2,那么 dp[3] = MAX( dp[2], dp[1] + num ) = MAX(4, 3+2) = 5,3 号房间可盗窃最大值为 55

时间复杂度:O(n)O(n),nn 为数组长度


class Solution {

public int rob(int[] nums) {

        int len = nums.length;

        if (len ==0)

            return 0;

        int[] dp =new int[len +1];

        dp[0] =0;

        dp[1] = nums[0];

        for (int i =2; i <= len; i++) {

            dp[i] = Math.max(dp[i -1], dp[i -2] + nums[i -1]);

        }

        return dp[len];

    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、题目描述 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 ...
    书瓖果fifty阅读 133评论 0 0
  • 题目 难度:★★☆☆☆类型:数学 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯...
    玖月晴阅读 1,012评论 0 0
  • 原题链接:https://leetcode-cn.com/problems/house-robber/ 题目: 你...
    IgorNi阅读 244评论 0 0
  • 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋...
    或无言阅读 220评论 0 0
  • 198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是...
    萨缪阅读 106评论 0 0