算法随想录第四十八天打卡| 198.打家劫舍 , 213.打家劫舍II , 337.打家劫舍III

 详细布置 

今天就是打家劫舍的一天,这个系列不算难,大家可以一口气拿下。

 198.打家劫舍  

视频讲解:动态规划,偷不偷这个房间呢?| LeetCode:198.打家劫舍_哔哩哔哩_bilibili

代码随想录

class Solution(object):def rob(self, nums):if len(nums)==1:return nums[0]dp=[0]*len(nums)  #代表的是0到i的房屋最高可获得多少的钱dp[0]=nums[0]dp[1]=max(nums[0],nums[1])for i in range(2,len(nums)):dp[i]=max(dp[i-1],dp[i-2]+nums[i])return dp[len(nums)-1]

总结

这道题知道方程式怎么写就应该可以写出来了。背包的题做多了之后还以为dp数组是背包问题才会有的,结果导致动态问题不知道怎么写了。

 213.打家劫舍II  

视频讲解:动态规划,房间连成环了那还偷不偷呢?| LeetCode:213.打家劫舍II_哔哩哔哩_bilibili

代码随想录

  思路

对于一个数组,成环的话主要有如下三种情况:

  • 情况一:考虑不包含首尾元素

213.打家劫舍II

  • 情况二:考虑包含首元素,不包含尾元素

213.打家劫舍II1

  • 情况三:考虑包含尾元素,不包含首元素

213.打家劫舍II2

class Solution(object):def rob(self, nums):if len(nums)==1:return nums[0]if len(nums)==2:return max(nums[0],nums[1])result1=self.robRange(0,len(nums)-2,nums)  #包前不包后result2=self.robRange(1,len(nums)-1,nums)  #包后不包前return max(result1,result2)def robRange(self,left,right,nums):#prev_max和curr_max相当于用的是双指针prev_max = nums[left]  #相当于规定dp[0]curr_max = max(nums[left],nums[left+ 1])  #相当于规定dp[1]for i in range(left+2,right+1):temp=curr_maxcurr_max=max(curr_max,prev_max+nums[i])prev_max=tempreturn curr_max

总结

这个方法妙鸭。算了,想不到的就不会吧,下次就会了。

 337.打家劫舍III  

视频讲解:动态规划,房间连成树了,偷不偷呢?| LeetCode:337.打家劫舍3_哔哩哔哩_bilibili

代码随想录

class Solution:memory = {}def rob(self,root):if root is None:return 0if root.left is None and root.right  is None:return root.valif self.memory.get(root) is not None:  #相当于dp数组,在memory中添加root且最后返回答案return self.memory[root]# 偷父节点val1 = root.valif root.left:val1 += self.rob(root.left.left) + self.rob(root.left.right)if root.right:val1 += self.rob(root.right.left) + self.rob(root.right.right)# 不偷父节点val2 = self.rob(root.left) + self.rob(root.right)self.memory[root] = max(val1, val2)return max(val1, val2)

总结

这真的是中等难度吗,感觉一点思路都没有。开始我是想的是他添加的时候是一排的都会添加,所以用回溯法,结果他不是一排都可以添加,思路理解错了。答案用的是定义,dp数组是0到root所能得到的最大值,val1表示偷当前节点,val2表示不偷当前节点。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32 E18-D80NK红外避障传感器

E18-D80NK-N是一款红外光电传感器,它同时具备发射和接收功能。通过对发射光进行调制后发出,并通过接收头对反射光进行解调输出。 E18-D80NK-N采用了透镜来增强传感器的性能,使其能够检测更远的距离。根据红外光的特性,不同颜色的…

拒掉了一个双 985 的面试者

下班路上,和一个大佬聊天,他说今天面试,拒掉了一个双 985 的候选人。 候选人背景很好,本科和硕士都是 985 院校毕业,并且是除了清北浙之外,排名非常靠前的 985院校。 本硕专业都是计算机专业,…

Spring Boot + security + jwt 测试安全策略

一、测试概述 主要目的是测试security的用法。因测试搭建mysql和redis比较麻烦,所以我这里将自定义的jwt和用户信息缓存到程序的内存中。 本人测试的项目比较混乱,Spring Boot父类只标出有用的依赖。其子类用的版本为jdk11。后续会继续深入oauth2&#x…

数据库之TiDB基础讲解

文章目录 1 TiDB1.1 引言1.2 TiDB介绍1.3 系统架构1.3.1 TIDB Server1.3.2 PD Server1.3.3 TIKV Server1.3.4 TiKV如何不丢失数据1.3.5 分布式事务支持 1.4 与MySQL的对比1.5 性能测试1.5.1 测试一1.5.2 系统测试报告 2 1 TiDB 1.1 引言 当我们使用 Mysql 数据库到达一定量级…

调试小结:PHY初始化前后Link Status是否能正确反应网线插上、拔下状态

1 说明 为了验证是否需要初始化PHY才能检测到网线插上、拔下,这里我们对比初始化PHY(LAN8720)前后,插拔网线PHY寄存器1的bit2的是否按照预期变化来进行测试。 我们查看的PHY寄存器是1的bit2,定义如下: 2…

springboot的actuator

1、actuator简介 微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会经过很多个微服务的处理和传递,出现了异常如何快速定位是哪个环节出现了问题&am…

STM32 CAN接口中断处理与性能优化技巧

在基于STM32的CAN接口中,中断处理是一个非常重要的部分,它可以帮助我们实时地处理接收到的数据和处理其他CAN事件。为了优化CAN接口的性能,以下是一些中断处理和性能优化的技巧: ✅作者简介:热爱科研的嵌入式开发者&am…

系统架构19 - 面向对象

面向对象设计 相关概念面向对象分析基本步骤基本原则分析模型 面向对象设计设计模型类的类型 面向对象编程基本特点需求建模设计原则面向对象软件测试 相关概念 接口:描述对操作规范的说明,其只说明操作应该做什么,并没有定义操作如何做。消…

C与C++相互调用的“底层原理“

在你的C语言代码中,不知能否看到类似下面的代码: 这好像没有什么问题,你应该还会想:“嗯⋯是啊,我们的代码都是这样写的,从来没有因此碰到过什么麻烦啊~”。 你说的没错,如果你的头…

ES6理论及方法

一、基础知识 1.不可枚举就是不可遍历。 2.数据代理:通过一个对象代理对另一个对象中属性的操作(读/写) 二、方法 1.一个字符串是否包含在另一个字符串中 includes():返回布尔值,表示是否找到了参数字符串。 starts…

Excel中将16进制数转化成10进制(有/无符号)

Excel中将16进制数转化成10进制(有/无符号) Excel或者matlab中常用XXX2XXX进行不同进制的转换 16进制转10进制(无符号数):HEX2DEC 16进制转10进制(有符号数): FA46为例&#xff0c…

看到小米SU7这顶配价格 全都坐不住了

文 | AUTO芯球 作者 | 李诞 果然被我猜中了吗? 我是真的猜中了吗 之前我的视频里说 小米SU7这技术、这车 绝对值35万 今天爆出来 小米汽车上牌售价 保险费用显示顶配36.14万 难怪雷总说 这是按照Dream Car的标准来设计的 投入百亿 雷总这点是真没骗人 …

架构整洁之道-价值维度与编程范式

1 设计与架构究竟是什么 结论:二者没有任何区别,一丁点区别都没有。 架构图里实际上包含了所有底层设计细节,这些细节信息共同支撑了顶层的架构设计,底层设计信息和顶层架构设计共同组成了整个架构文档。底层设计细节和高层架构信…

Matplotlib应用-股票技术分析实战

MACD Moving Average Convergence/Divergence,意为异同移动平均线。它刻画的是股价变化的速度 MACD算法 指标含义公式短期EMA短期收盘价指数移动均线(12天)前一日EMA(12)11/13 今日收盘价2/13长期EMA长期收盘价指数移动均线(26天)前一日EMA(26)25/27 今日收盘价2…

数据结构——并查集

1.并查集的定义 并查集其实也是一种树形结构,在使用中通常用森林的方式来表示 并查集的逻辑结构其实就是集合 并查集一般可以通过双亲写法(顺序结构)来完成,即通过一个数组存储父亲结点的下标 int s[10005]; int main() {for(…

深入了解Yum:Linux系统的软件包管理利器

目录 软件包 软件包的来源 关于yum yum是什么 yum的相关操作 介绍rzsz rz(从Windows本地传到Linux服务器) sz(从Linux服务器传到Windows本地) 注意事项 查看软件包 安装软件 卸载软件 yum的本地配置 为什么要进行配置…

《基于“源启+”的应用重构白皮书》

当前,行业数字化转型驶入“深水区”,全新的市场竞争格局对行业发展提出更高的要求,企业高质量发展需要借助新架构新应用重新定义数字生产力,重塑商业模式与市场核心竞争力。 在中国电子主办,中电金信承办的“数字原生向…

Git学习笔记(第10章):自建代码托管中心GitLab

目录 10.1 简介 10.2 安装 10.2.1 准备服务器 10.2.2 准备安装包 10.2.3 编写安装脚本 10.2.4 初始化GitLab服务 10.2.5 启动GitLab服务 10.2.6 使用浏览器访问GitLab 10.3 创建远程库 10.4 本地库推送到远程库 10.1 简介 GitLab是由GitLab Inc.开发,使用…

Nacos服务注册源码:客户端

入口 我们就拿nacos自己example下的NamingExample来做测试 public class NamingExample {public static void main(String[] args) throws NacosException, InterruptedException {Properties properties new Properties();properties.setProperty("serverAddr", …

39、FlatFormer:MIT+交大+清华共同提出,更加高效的Transformer[无绳蹦极第一人!]

本文由麻省理工学院、上海交通大学、清华大学于2023年7月14日发表于Arxiv的<Computer Science> 论文&#xff1a; [2301.08739] FlatFormer: Flattened Window Attention for Efficient Point Cloud Transformer (arxiv.org) 代码&#xff1a; github.com Abstract&a…