这题相当于在有第一位的情况下不能选择最后一个。就前n-1和除了第一个之外的2个数组进行比较。代码如下:
class Solution(object):
def rob(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) <= 0:
return 0
if len(nums) == 1:
return nums[0]
def robb(nums):
if nums == []:
return 0
nums += [0, 0]
for i in range(len(nums) - 2):
nums[i] = max(nums[i] + nums[i - 2], nums[i - 1])
return nums[-3]
return max(robb(nums[:-1]), robb(nums[1:]))