/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param nums int整型一维数组
 * @return int整型
 */
function rob(nums) {
    // write code here
    let len = nums.length;
    if (len < 3) {
        return 0;
    } else if (len == 3) {
        let max = 0;
        for (let i = 0; i < 3; i++) {
            if (max < nums[i]) {
                max = nums[i];
            }
        }
        return max;
    } else {
        let ans = 0;
        let dp = Array.from(new Array(len + 1).fill(0));
        dp[1] = nums[0];
        for (let i = 2; i < len; i++) {
            dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i - 1]);
        }
        // 先得到偷第一家的最大值
        ans = dp[len - 1];
        dp[1] = 0;
        for (let i = 2; i <= len; i++) {
            dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i - 1]);
        }
        // 比较偷第一家的最大值和不偷第一家的最大值
        if (dp[len] > ans) {
            ans = dp[len];
        }
        return ans;
    }
}
module.exports = {
    rob: rob,
};