动态规划
class Solution {
public int rob(int[] nums) {
//1. 分析含义
//dp[i] 表示,对于i个房间能偷到的最大金额
//寻找关系
//如果第i-1个房间被偷了,那dp[i] = dp[i-1]
//如果第i-1个房间没被偷,那dp[i] = dp[i-2]+nums[i];
int len = nums.length;
if(len < 1)
return 0;
if(len == 1)
return nums[0];
int[] dp = new int[len];
//初始化
dp[0] = nums[0];
dp[1] = Math.max(nums[0],nums[1]);
for(int i=2;i<len;i++){
dp[i] = Math.max(dp[i-1],dp[i-2]+nums[i]);
}
return dp[len-1];
}
}