LeetCode 198 打家劫舍

LeetCode 198 打家劫舍,第1张

LeetCode 198 打家劫舍

直接用动态优化解决

先构建状态转移方程,dp[i] = max(dp[i-2]+nums[i],dp[i-1])

处理好两端,dp[0]=nums[0],dp[1]=max(nums[0],nums[1])

那么,循环就直接从2开始到len(nums)

代码呈上

class Solution:
    def rob(self, nums: List[int]) -> int:
        if not nums:
            return 0
        n = len(nums)
        if n == 1:
            return nums[0]
        dp = [0]*n
        dp[0] = nums[0]
        dp[1] = max(nums[0],nums[1])
        for i in range(2,n):
            dp[i] = max(dp[i-2]+nums[i],dp[i-1])
        return dp[n-1]

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5661530.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存