198. House Robber
到某个位置的房子为止最大的收益,是“上个房子最大收益”和“上上个房子收益+本房子的收益”中比较大的那个
因为需要用到上上个房子的值,所以至少要有三个房子,所以一个房子的时候要单独处理
1 public int rob(int[] nums) { 2 if(nums.length == 0) { 3 return 0; 4 } 5 int len = nums.length; 6 int[] maxMoney = new int[len]; 7 if(len == 1) { 8 return nums[0]; 9 } 10 maxMoney[0] = nums[0]; 11 maxMoney[1] = Math.max(nums[0], nums[1]); 12 for(int i = 2; i < len; i++) { 13 maxMoney[i] = Math.max(maxMoney[i-2] + nums[i], maxMoney[i-1]); 14 } 15 return maxMoney[len-1]; 16 }