动态规划思想,第i天能获得的最大金钱数为dp[i] =Math.max(nums[i] + dp[i - 2], dp[i - 1]),即要么是第i-1天的金钱数,要么是第i-2天的金钱数加上第i天的金钱数。
public class Solution {
public int rob(int[] nums) {
if(nums.length==0)
return 0;
if(nums.length==1)
return nums[0];
if(nums.length==2)
return Math.max(nums[0], nums[1]);
int []dp=new int[nums.length];
dp[0]=nums[0];
dp[1]=Math.max(nums[0], nums[1]);
for(int i=2;i<nums.length;i++)
{
dp[i] =Math.max(nums[i] + dp[i - 2], dp[i - 1]);
}
return dp[nums.length-1];
}
}