题目链接
    image.png

    1. class Solution {
    2. // 简化围成一圈,最后的数组的元素选还是不选
    3. public int rob(int[] nums) {
    4. if(nums.length == 1) return nums[0];
    5. if(nums.length == 2) return Math.max(nums[0], nums[1]);
    6. return Math.max(maxMoney(nums, 0, nums.length-1), maxMoney(nums, 1, nums.length));
    7. }
    8. public int maxMoney(int[] nums, int start, int end) {
    9. int first = nums[start];
    10. int second = Math.max(first, nums[start+1]);
    11. for(int i = start+2; i < end; i++) {
    12. int temp = second;
    13. second = Math.max(first+nums[i], second);
    14. first = temp;
    15. }
    16. return second;
    17. }
    18. }