题目链接

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; }}