#coding:utf-8 # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param nums int整型一维数组 # @return int整型 # class Solution: def rob(self , nums ): # write code here #init max_val = 0 n = len(nums) dp = [0 for i in range(0, n + 1)] dp2 = [0 for i in range(0, n + 1)] if n == 0: return 0 elif n == 1: return nums[0] elif n == 2: return max(nums[0], nums[1]) #偷第一家, 遍历的时候数组最后一位不去遍历 dp[1] = nums[0] for i in range(2, n): dp[i] = max(dp[i - 1], dp[i - 2] + nums[i - 1]) dp2[1] = 0 #第一家不偷,遍历的时候数组最后一位遍历 for i in range(2, n + 1): dp2[i] = max(dp2[i - 1], dp2[i - 2] + nums[i - 1]) return max(dp[n - 1], dp2[n])