import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型
*/
public int rob (int[] nums) {
// write code here
// 最后一个房间和第一个房间相邻 意味着 两种情况
//一种是从第一家开始偷 这样 最后一家就不能偷 1 ~ n-1
//一种是从第二家开始偷 这样 最后一家就可以偷 2 ~ n
int n = nums.length;
int[] a = new int[n-1];
int[] b = new int[n];
a[0] = nums[0];
a[1] = Math.max(nums[0], nums[1]);
for (int i=2; i<n-1; i++) {
a[i] = Math.max(a[i-1], a[i-2] + nums[i]);
}
b[1] = nums[1];
b[2] = Math.max(nums[1], nums[2]);
for (int i=3; i<n; i++) {
b[i] = Math.max(b[i-1], b[i-2] + nums[i]);
}
return a[n-2] > b[n-1] ? a[n-2] : b[n-1];
}
}