class Solution:
def rob(self, nums: List[int]) -> int:
def rob_div(nums):
pre, curr = 0, 0
for i in nums:
pre, curr = curr, max(curr, pre + i)
return curr
if not nums:
return 0
if len(nums) == 1:
return nums[0]
return max(rob_div(nums[:-1]), rob_div(nums[1:]))
动态规划 中等
分别计算 nums[0:n-1] 和 nums[1:n] 的最优解就好
https://leetcode-cn.com/problems/house-robber-ii/