代码随想录训练营Day48|● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

目录

学习目标

学习内容

 198.打家劫舍

  213.打家劫舍II  

 337.打家劫舍III


学习目标

  •  198.打家劫舍 
  •  213.打家劫舍II  
  •  337.打家劫舍III

学习内容

 198.打家劫舍

198. 打家劫舍 - 力扣(LeetCode)icon-default.png?t=N4HBhttps://leetcode.cn/problems/house-robber/

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

  213.打家劫舍II  

213. 打家劫舍 II - 力扣(LeetCode)icon-default.png?t=N4HBhttps://leetcode.cn/problems/house-robber-ii/

class Solution:
    def rob(self, nums: List[int]) -> int:
        n = len(nums)
        if n==1:return nums[0]
        @cache
        def dfs(i,first):
            if i<0:return 0
            if i==0:
                if first:return nums[i]
                return 0
            return max(dfs(i-1,first),dfs(i-2,first)+nums[i])
        return max(dfs(n-1,False),dfs(n-2,True))
class Solution:
    def rob(self, nums: List[int]) -> int:
        n = len(nums)
        if n==1:return nums[0]
        dp = [0]*(n+1)
        dp[1] = nums[0] # 选首家不选尾家
        for i in range(2,n):
            dp[i] = max(dp[i-1],dp[i-2]+nums[i-1])
        a = dp[n-1]
        dp = [0]*(n+1)
        for i in range(2,n+1):
            dp[i] = max(dp[i-1],dp[i-2]+nums[i-1])
        b = dp[n]
        return max(a,b)

 337.打家劫舍III

337. 打家劫舍 III - 力扣(LeetCode)icon-default.png?t=N4HBhttps://leetcode.cn/problems/house-robber-iii/

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def rob(self, root: Optional[TreeNode]) -> int:
        @cache
        def dfs(root,robbed):
            if not root:return 0
            if robbed:
                return dfs(root.left,False)+dfs(root.right,False)+root.val
            return max(dfs(root.left,False),dfs(root.left,True))+max(dfs(root.right,False),dfs(root.right,True))
        return max(dfs(root,False),dfs(root,True))
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def rob(self, root: Optional[TreeNode]) -> int:
        @cache
        def dfs(root):
            if not root:return [0,0] # 偷,不偷
            left = dfs(root.left)
            right = dfs(root.right)
            steal = max(left[0],left[1])+max(right[0],right[1])
            return [left[1]+right[1]+root.val,steal]
        res = dfs(root)
        return max(res[0],res[1])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/22788.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为了流量,何同学做了个“假B站”?

何同学是B站知名数码博主&#xff0c;凭借优秀的视频制作能力&#xff0c;内容创新获得广大年轻用户的喜欢。 2021年的时候&#xff0c;UP主老师好我叫何同学就发布了一条制作AirDesk的视频&#xff0c;随后迅速在社交媒体中引发了大量关注。 当时&#xff0c;该视频为B站全站…

【c++】类和对象(中)

【c】类和对象&#xff08;中&#xff09; 默认成员函数初始化和清理构造函数重载分类使用场景 析构函数使用场景 拷贝赋值拷贝构造函数使用场景浅拷贝与深拷贝 赋值重载赋值重载和拷贝构造函数的区别使用场景 取地址重载 本篇博客主要讲&#xff1a;六个默认成员函数 默认成员…

SpringBoot配置文件 | 多环境配置 | 读取配置的4种方式

文章目录 一、写配置文件的位置读取的优先级&#xff1a;1.文件位置&#xff1a;2.文件名和文件后缀&#xff1a;3.配置文件中的profile-specific文件&#xff1a;4.命令行参数 二、多环境配置1. properties&#xff1a;2. yaml 三、yaml配置文件yaml、properties、xml对比&…

Gateway服务网关入门

Gateway服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关&#xff0c;它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。…

OpenAI ChatGPT Unity接入

OpenAI ChatGPT Unity接入 OpenAI ChatGPT Unity接入OpenAi-API-Unity 方法OpenAi-API-Unity 下载本地配置Unity 模块URL接入gz 接入json 接入Open AIOpenAi-Api-Unity 插件文档 OpenAi 本地化接入 Unity 方法Unity 关键字识别语音合成 & 文字转语音音频记录 & 实时音频…

C语言_数据类型[详细分析]

接上一篇&#xff1a;C语言_关键字_标识符简介 本次来分享C语言的数据类型&#xff0c;是博主的一些学习笔记的和心得的总结&#xff0c;话不多说&#xff0c;开始上菜&#xff1a; 此博主在CSDN发布的文章目录&#xff1a;我的CSDN目录&#xff0c;作为博主在CSDN上发布的文章…

四个PCB工程师最头痛的Allegro问题及解答,你一定要看

Allegro是一款功能强大的PCB设计软件&#xff0c;广泛应用在电子设计行业&#xff0c;在使用Allegro过程中&#xff0c;工程师会遇见到多种复杂的技术问题&#xff0c;本文将针对工程师最头痛的Allegro问题进行回答&#xff0c;希望对小伙伴们有所帮助。 1、如何创建新的Allegr…

线上问题处理案例:出乎意料的数据库连接池 | 京东云技术团队

导读 本文是线上问题处理案例系列之一&#xff0c;旨在通过真实案例向读者介绍发现问题、定位问题、解决问题的方法。本文讲述了从垃圾回收耗时过长的表象&#xff0c;逐步定位到数据库连接池保活问题的全过程&#xff0c;并对其中用到的一些知识点进行了总结。 一、问题描述…

高丰度铈磁体

随着烧结钕铁硼应用领域的不断拓展和产量的快速增长&#xff0c;相应的稀土资源也被大量开采。稀土矿中各种稀土元素是共生的&#xff0c;但在钕铁硼的制备过程中&#xff0c;利用的主要是在轻稀土中质量分数为25%的镨Pr和钕Nd元素&#xff0c;这样对轻稀土中占比为质量分数49%…

AIGC周报|让AI来画《海贼王》;苹果限制员工使用ChatGPT;李彦宏:不担心大模型会让工作消失

AIGC&#xff08;AI Generated Content&#xff09;即人工智能生成内容。近期爆火的 AI 聊天机器人 ChatGPT&#xff0c;以及 DallE 2、Stable Diffusion 等文生图模型&#xff0c;都属于 AIGC 的典型案例&#xff0c;它们通过借鉴现有的、人类创造的内容来快速完成内容创作。 …

MySQL备份

MySQL的备份方式有哪几种&#xff1f;分别如何实现&#xff1f; 目录 一、数据的备份类型 1、数据的备份类型根据其自身的特性主要分为以下几组&#xff1a; 二、MySQL备份数据的方式 三、常见的备份工具 1、一般情况下, 我们需要备份的数据分为以下几种 2、备份工具 3…

SpringBoot—常用注解

目录 一、注解(annotations)列表 二、注解(annotations)详解 三、JPA注解 四、springMVC相关注解 五、全局异常处理 一、注解(annotations)列表 SpringBootApplication&#xff1a; 包含了ComponentScan、Configuration和EnableAutoConfiguration注解。其中ComponentScan…

【大学物理实验】基本测量

50分度的游标卡尺&#xff0c;最小分度为&#xff1a; A. 0.1mm B. 0.2mm C. 0.5mm D. 0.02mm 正确答案&#xff1a; D 保存游标卡尺和螺旋测微器是&#xff0c;下面说法正确的是&#xff1a; A. 游标卡尺测量位置应闭合&#xff0c;螺旋测微器小砧和螺杆间隙也应闭合 B. 游标…

Matlab论文插图绘制模板第94期—带置信区间的折线散点图

在之前的文章中&#xff0c;分享了很多Matlab带置信区间的折线图的绘制模板&#xff1a; 进一步&#xff0c;再来分享一下带置信区间的折线散点图的绘制模板。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&#xff0c;加群的朋友…

SSD202 Linux开发日志记录

一、挂载U盘 SDK默认自动加载USB存储模块&#xff0c;但没有自动挂载&#xff0c;插上U盘后识别sda mount /dev/sda /mnt/即可在/mnt查看U盘文件 二、make & make menuconfig提示失败 打开新终端后输入 declare -x ARCH"arm" declare -x CROSS_COMPILE"…

机器学习中四类进化算法的详解(遗传算法、差分进化算法、协同进化算法、分布估计算法)

1、遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09; GA算法原理 首先我们来介绍进化算法的先驱遗传算法&#xff0c;遗传算法&#xff08;Genetic Algorithm&#xff0c;简称GA&#xff09;是一种最基本的进化算法&#xff0c;它是模拟达尔文生物进化理论的…

企业级WordPress开发 – 创建企业级网站的优秀提示

目录 “企业级”是什么意思&#xff1f; 使用WordPress创建企业级网站有什么好处&#xff1f; 使用 WordPress 进行企业开发的主要好处 WordPress 可扩展、灵活且价格合理 WordPress 提供响应式 Web 开发 WordPress 提供了巨大的可扩展性 不断更新使 WordPress 万无一…

Nodejs模块化

介绍 将一个复杂的程序文件按照一定规则拆分成多个文件。 拆分出的每个文件就是一个模块&#xff0c;模块的内容数据是私有的&#xff0c;不过模块可以暴露内部数据使得其他模块使用。 模块化好处&#xff1a;防止命名冲突、高复用性、高维护性。 模块化的使用 初体验 两…

云计算基础——云计算与移动互联网、物联网

8.1 云计算与移动互联网 8.1.1 移动互联网的发展概况 移动互联网的发展概况 移动互联网是指以宽带IP为技术核心&#xff0c;可同时提供语音、数据、多媒体等业务服务的开什么是移动互联网?放式基础电信网络&#xff0c;从用户行为角度来看&#xff0c;移动互联网广义上是指用…

Linux下的用户分类与su/sudo 命令,Linux下的文件类型/用户文件权限身份/文件权限属性/权限与文件权限/ls-l文件属性详解

Tips 下载就是把我们的文件拷贝到系统的某个特定路径之下&#xff0c;普通用户是不允许你往系统里面去拷的。 Linux下的用户分类 root用户&#xff0c;管理员级别的用户身份&#xff0c;他的话基本上不受权限的约束。普通用户&#xff0c;普通用户的添加与每个普通用户密码的…