
思路:既然头尾不能同时取,那就分别算只取头或者只取尾,不考虑特殊情况的话是一个简单的动态规划
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)
                


















