第一个与第三第四都属于不接触范围所以不能用简单的奇偶数进行处理。
所以需要一个新的数组来将没有相邻的可能性进行存储。
public class S_198 {
public int rob(int[] nums) {
int len=nums.length;
// 特殊情况考虑
if(len==0)
return 0;
if(len==1)
return nums[0];
// 新建一个数组
int [] dp=new int[len];
// 第一个存入
dp[0]=nums[0];
// 判断第二个数和第一个数的大小
dp[1]=nums[0]>nums[1]?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];
}
}