思路:既然头尾不能同时取,那就分别算只取头或者只取尾,不考虑特殊情况的话是一个简单的动态规划
class Solution:def rob(self, nums: list[int]) -> int:if len(nums) <= 3:return max(nums)max_sum = [nums[0], max(nums[1], nums[0])]for i in range(2, len(nums)-1):max_sum.append(max(max_sum[i - 2] + nums[i], max_sum[i - 1]))sum1=max_sum[-1]nums.pop(0)max_sum = [nums[0], max(nums[1], nums[0])]for i in range(2, len(nums)):max_sum.append(max(max_sum[i - 2] + nums[i], max_sum[i - 1]))sum2=max_sum[-1]print(sum1,sum2)return max(sum1,sum2)