题目描述:
    image.png
    解析:dp动态规划
    由于不可以在相邻的房屋闯入,所以在当前位置 n 房屋可盗窃的最大值,要么就是 n-1 房屋可盗窃的最大值,要么就是 n-2 房屋可盗窃的最大值加上当前房屋的值,二者之间取最大值
    动态规划方程:dp[n] = MAX( dp[n-1], dp[n-2] + num )

    1. class Solution {
    2. public int rob(int[] nums) {
    3. int len = nums.length;
    4. if(len == 0) return 0;
    5. int[] dp = new int[len + 1];
    6. dp[0] = 0;
    7. dp[1] = nums[0];
    8. for(int i = 2; i <= len; i++) {
    9. dp[i] = Math.max(dp[i-1], dp[i-2] + nums[i-1]);
    10. }
    11. return dp[len];
    12. }
    13. }