首页 > 其他分享 >198. 打家劫舍

198. 打家劫舍

时间:2024-09-18 14:24:51浏览次数:1  
标签:return 198 dp1 nums int dfs 打家劫舍 dp

题目链接 198. 打家劫舍
思路 入门动态规划-“打家劫舍”系列
题解链接 【视频讲解】动态规划入门:从记忆化搜索到递推(Python/Java/C++/Go/JS)
关键点
时间复杂度 \(O(n)\)
空间复杂度 \(O(n)\)或者\(O(1)\)

代码实现(DFS):

class Solution:
    def rob(self, nums: List[int]) -> int:
        @cache
        def dfs(i):
            if i < 0:
                return 0
            return max(dfs(i-1), dfs(i-2) + nums[i])
        return dfs(len(nums)-1)

代码实现(递推):

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

代码实现(空间优化):

class Solution:
    def rob(self, nums: List[int]) -> int:
        dp0 = dp1 = 0
        for x in nums:
            dp0, dp1 = dp1, max(dp1, dp0 + x)
        return dp1

标签:return,198,dp1,nums,int,dfs,打家劫舍,dp
From: https://www.cnblogs.com/WrRan/p/18418424

相关文章

  • 【数据分享】1985-2023年30米CLCD土地覆盖栅格数据分享
    1.数据来源​CLCD反映了中国快速的城市化进程和一系列生态工程,揭示了气候变化条件下人为对LC的影响,其在全球变化研究中具有潜在应用价值。2021年7月,武汉大学杨杰、黄昕两位教授共同撰写题为《30mannuallandcoveranditsdynamicsinChinafrom1990to2019》的研究论......
  • 每日OJ_牛客_合唱团(打家劫舍dp)
    目录牛客_合唱团(打家劫舍dp)解析代码1解析代码2牛客_合唱团(打家劫舍dp)合唱团__牛客网        有n个学生站成一排,每个学生有一个能力值,牛牛想从这n个学生中按照顺序选取k名学生,要求相邻两个学生的位置编号的差不超过d,使得这k个学生的能力值的乘积最大,......
  • luogu4198题解
    随机说话这个题做法没见过记一下。我一开始以为是李超树的题,结果把李超树打上之后就不会做了。然后题读错了写了一个弱化版。题目分析做法参考这个题题意只是假装是一个有关线段的题。简化之后的题意如下。有一个初始都为\(0\)的实数数列,每一次会修改位置\(x\)的数为......
  • AtCoder Beginner Contest 198 A~E 题解
    A-Div题目大意两个男孩要分\(N\)颗糖。问一共有几种分法(每个男孩都必须分到糖)?\(1\leN\le15\)输入格式\(N\)输出格式将答案输出为一个整数。样例\(N\)输出\(2\)\(1\)\(1\)\(0\)\(3\)\(2\)分析这题说白了就是将\(N\)分成\(A\)和\(B\)两个正整数......
  • 中国各省GDP平减指数(1980-2022年)(原始计算代码(计算过程和计算的文字说明)、最终计算结果
    GDP平减指数是一个关键的经济指标,用于衡量一个国家或地区在不同时间点的GDP价格水平变化。它通过比较现价GDP(名义GDP)与不变价GDP(实质GDP或真实GDP)之间的比例,帮助分析经济增长的实际表现,剔除了通货膨胀或紧缩的影响。GDP平减指数的定义GDP平减指数定义为:\text{GDP平减指数}=......
  • 213. 打家劫舍 II(leetcode)
    https://leetcode.cn/problems/house-robber-ii/description/灵神题解:https://leetcode.cn/problems/house-robber-ii/solutions/2445622/jian-ji-xie-fa-zhi-jie-diao-yong-198-ti-qhvri/classSolution{publicintrob(int[]nums){//f[i]表示前i个房屋选......
  • 力扣第198题 打家劫舍
    前言记录一下刷题历程力扣第198题打家劫舍打家劫舍原题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个......
  • CF1980F1 & F2 Field Division
    前言纪念一下独立做出来的\(2400\)的题Easyversion思路先说\(Easy\)版本的我们走路的方式只有可能是这种样子:(出处:luoguuserFiraCode)不想手绘图了即对列排序后,所形成的一个行编号上升的序列所以\(Easy\)就很简单了,对于每一列的最大值,如果大于当前前缀最大值,则......
  • GEE 更新和优化:利用GEE在线处理1985-2024年NDVI、EVI、SAVI、NDMI等指数归一化教程!(Lan
    简介本次的归一化教程,优化了数据去云,预处理等过程,同事将landsat5/7/8集合分别进行了数据整合,也就是原始波段的处理,从而我们可以调用1985-至今任何一个时期的影像进行归一化处理。具体的原文介绍请看原始的博客原始博客利用GEE(GoogleEarthEngine)在线处理NDVI、EVI、SAVI......
  • 代码随想录day39 || 198 打家劫舍,213 打家劫舍||,337 打家劫舍|||
    198打家劫舍funcrob(nums[]int)int{ //思路,动态规划 //dp[i]代表前下标为i能装的最大盗窃物品价值 //递推dp[i]=max(dp[i-1],dp[i-2]+v(i))//dp[i-1]代表不偷物品i,dp[i-2]+v(i)代表偷物品i,那么就不能偷i-1,因为题目要求不能相邻,所以考虑前i-2 //dp[0]=0,......