题目链接
class Solution {
// 简化围成一圈,最后的数组的元素选还是不选
public int rob(int[] nums) {
if(nums.length == 1) return nums[0];
if(nums.length == 2) return Math.max(nums[0], nums[1]);
return Math.max(maxMoney(nums, 0, nums.length-1), maxMoney(nums, 1, nums.length));
}
public int maxMoney(int[] nums, int start, int end) {
int first = nums[start];
int second = Math.max(first, nums[start+1]);
for(int i = start+2; i < end; i++) {
int temp = second;
second = Math.max(first+nums[i], second);
first = temp;
}
return second;
}
}