class Solution(object):
def rob(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
def helper(nums) :
include = exclude = 0
for n in nums :
include, exclude = n + exclude, max(include, exclude)
return max(include, exclude)
if not nums :
return 0
if len(nums) == 1 :
return nums[0]
return max(helper(nums[:len(nums) - 1]), helper(nums[1:]))
public class Solution {
private int robHelper(int[] nums, int start, int end) {
int include = 0;
int exclude = 0;
for (int i = start; i <= end; i++) {
int tempInclude = include;
int tempExclude = exclude;
include = tempExclude + nums[i];
exclude = Math.max(tempInclude, tempExclude);
}
return Math.max(include, exclude);
}
public int rob(int[] nums) {
if (nums == null || nums.length < 1) return 0;
int n = nums.length;
if (n == 1) return nums[0];
return Math.max(robHelper(nums, 0, n - 2), robHelper(nums, 1, n - 1));
}
}