# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param nums int整型一维数组 # @return int整型 # class Solution: def rob(self , nums: List[int]) -> int: # write code here # 只有一个时候 n =len(nums) if n==1: return nums[0] # 只能选择第一个 if n ==2: # 情况2;只能选择其中一种 return max(nums[0],nums[1]) # 超过两个元素分为两段 [0,n-2] [1,n-1] # [0,n-2] dp1=[0]*(n) dp1[0]=nums[0] dp1[1]=nums[1] for i in range(2,n-1): dp1[i]=max(dp1[i-1],dp1[i-2]+nums[i]) # [1,n-1] dp2=[0]*(n) dp2[1]=nums[1] dp2[2]=nums[2] for i in range(3,n): dp2[i]=max(dp2[i-1],dp2[i-2]+nums[i]) print(dp1) print(dp2) return max(dp1[n-2],dp2[n-1])