动态规划
当房屋k小于2时,偷取最高金额的一家
当房屋k大于2时分两种情况:
1,偷窃第 k间房屋,那么就不能偷窃第k−1 间房屋,偷窃总金额为前 k−2 间房屋的最高总金额与第 k间房屋的金额之和。
2,不偷窃第k间房屋,偷窃总金额为前 k−1 间房屋的最高总金额。
处。
class Solution {
public int rob(int[] nums) {
if(nums==null)
return 0;
int len=nums.length;
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-2]+nums[i],dp[i-1]);
}
return dp[nums.length-1];
}
}