输入: [1,2,3,1]
输出: 4
解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
偷窃到的最高金额 = 1 + 3 = 4 。
class Solution {
public int rob(int[] nums) {
if(nums==null||nums.length==0)
return 0;
if(nums.length==1)
return nums[0];
int m=nums.length;
int [] dp=new int [m];
dp[0]=nums[0];
dp[1]=Math.max(nums[0],nums[1]);//代码写的比较丑,但是先AC吧
int max=dp[1];
for(int i=2;i<m;i++){
dp[i]=Math.max(dp[i-2]+nums[i],dp[i-1]);
max=Math.max(dp[i],max);
}
return max;
}
}