本文主要是介绍90. 打家劫舍II (房子围成一圈),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
题解
class Solution:def rob(self, nums: List[int]) -> int:def dp(nums: List[int]) -> int:N = len(nums)# 定义状态:dp[i]表示从第i个房屋开始偷窃,能够偷到的最高金额dp = [0 for i in range(N)]for i in range(N-1, -1, -1):if i == N-1:dp[i] = nums[i]elif i == N-2:dp[i] = max(nums[i], nums[i+1])else:dp[i] = max(dp[i+1], nums[i] + dp[i+2])return dp[0]if len(nums) == 1:return nums[0]res = max(dp(nums[:-1]), dp(nums[1:]))return res
这篇关于90. 打家劫舍II (房子围成一圈)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!