剑指 Offer II 090. 环形房屋偷盗
- 将问题转换为持家劫舍一就好做了。具体过程是对于首尾偷与不偷我们得分开讨论。如果首家被偷,那么末尾的家必不能偷,问题就转变成偷
[0, i - 1]家,同理也将问题转换为偷[1, i]家。 ```java class Solution { public int rob(int[] nums) {if (nums == null || nums.length == 0) return 0;if (nums.length == 1) return nums[0];int len = nums.length - 1;int includeZero = robHouse(nums, 0, len - 1);int excludeZero = robHouse(nums, 1, len);
return Math.max(includeZero, excludeZero);
}
// 左闭右闭
private int robHouse(int[] nums, int start, int end) {
int len = nums.length;
int prev = 0, cur = 0, temp;
for (int i = start; i <= end; i++) {
temp = cur;
cur = Math.max(prev + nums[i], cur);
prev = temp;
}
return cur;
}
} ```
