import java.lang.Math;

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @return int整型
     */
    public int rob (int[] nums) {
        // 只有一个元素,就返回该元素的值
       if(nums.length == 1){
           return nums[0];
       }
        // 两个元素,就返回两元素中其中一个最大值
       if(nums.length == 2){
           return Math.max(nums[0],nums[1]);
       }
        // 定义一个数组,记录 n-1个值的和 和n-2个值的和
       int[] maxVal = new int[nums.length];
        // 初始化结果数组 第0 个元素和第 1个元素
       maxVal[0] = nums[0];
       maxVal[1] = Math.max(nums[0],nums[1]);
       for(int i = 2;i<nums.length;i++){
           maxVal[i] = Math.max(maxVal[i-1],maxVal[i-2]+nums[i]);
       }
       return maxVal[maxVal.length -1];
    }
}

alt