难度:中等

思路:
class Solution:
def rob(self, nums: List[int]) -> int:
if len(nums) == 1:
return nums[0]
a, b = nums[0], max(nums[0], nums[1])
for i in range(2, len(nums) - 1):
a, b = b, max(b, a + nums[i])
if b >= a + nums[-1]:
return b
ans = max(a, b)
a, b = 0, nums[1]
for i in range(2, len(nums)):
a, b = b, max(b, a + nums[i])
return max(a, b, ans)
学习:对于 for 循环的重复部分可以写成函数的形式来调用以简化代码