【6.05 代随_48day】 打家劫舍、打家劫舍 II、打家劫舍 III

打家劫舍、打家劫舍 II、打家劫舍 III

  • 打家劫舍
    • 1.方法
      • 图解步骤
      • 代码
  • 打家劫舍 II
    • 1.方法
      • 代码
  • 打家劫舍 III
      • 图解步骤
      • 代码


打家劫舍

力扣连接:198. 打家劫舍(中等)

1.方法

  1. 确定dp数组(dp table)以及下标的含义
    dp[i]:考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i]。

图解步骤

在这里插入图片描述

关键点

  • 如果不偷第i房间,那么dp[i] = dp[i - 1],即考 虑i-1房,(注意这里是考虑,并不是一定要偷i-1房,这是很多同学容易混淆的点)

代码

class Solution {public int rob(int[] nums) {int len = nums.length;if(len==1) return nums[0];int[] dp = new int[len];dp[0] = nums[0];dp[1] = Math.max(nums[0], nums[1]);for(int i=2;i<nums.length;i++){dp[i] = Math.max(dp[i-1], dp[i-2]+nums[i]);}return dp[len-1];}
}


打家劫舍 II

力扣连接:213. 打家劫舍 II(中等)

1.方法

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

情况一:考虑不包含首尾元素
在这里插入图片描述

情况二:考虑包含首元素,不包含尾元素
在这里插入图片描述

情况三:考虑包含尾元素,不包含首元素
在这里插入图片描述

注意我这里用的是"考虑",例如情况三,虽然是考虑包含尾元素,但不一定要选尾部元素! 对于情况三,取nums[1] 和 nums[3]就是最大的。

情况二 和 情况三包含了情况一了,所以只考虑情况二和情况三就可以了。

代码

class Solution {public int rob(int[] nums) {int len = nums.length;if(len==1) return nums[0];if(len==2) return Math.max(nums[0], nums[1]);int result1 = robRange(nums, 0, len-2);int result2 = robRange(nums, 1, len-1);return Math.max(result1, result2);}public int robRange(int[] nums, int start, int end){int len = nums.length;int[] dp = new int[len];dp[start] = nums[start];dp[start+1] = Math.max(nums[start], nums[start + 1]);for(int i= start + 2; i<=end;i++){dp[i] = Math.max(dp[i-1], dp[i-2]+nums[i]);}return dp[end];}
}


打家劫舍 III

力扣连接:337. 打家劫舍 III(中等)

  1. dp数组(dp table)以及下标的含义:下标为0记录不偷该节点所得到的的最大金钱,下标为1记录偷该节点所得到的的最大金钱
    所以本题dp数组就是一个长度为2的数组!
    因为在递归的过程中,系统栈会保存每一层递归的参数。

图解步骤

在这里插入图片描述

关键点

  • 如果不偷当前节点,那么左右孩子就可以偷,至于到底偷不偷一定是选一个最大的,所以:val0 = max(left[0], left[1]) + max(right[0], right[1]);

代码

class Solution {public int rob(TreeNode root) {int[] result = robTree(root);return Math.max(result[0], result[1]);}public int[] robTree(TreeNode cur){if(cur==null) return new int[]{0, 0};//后续遍历,左右中int[] left = robTree(cur.left);int[] right = robTree(cur.right);int val0 = Math.max(left[0], left[1]) + Math.max(right[0], right[1]);int val1 = cur.val + left[0] + right[0];return new int[]{val0, val1};}
}


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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

go 并发/并行/协程/sync锁读写锁

下面来介绍几个概念&#xff1a; 进程/线程&#xff1a; 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。线程是进程的一个执行实体&#xff0c;是 CPU 调度和分派的基本单位&#xff0c;它是比进程更小的能独立运行的基本单位。一…

易点易动打通财务系统,打破数据孤岛,实现固定资产的账实一致

固定资产管理涉及资产的采购、验收、账务处理、折旧管理等全流程,同时也牵涉到财务系统和资产系统两大信息孤岛。这两个系统之间数据不互通,导致资产的账实信息无法同步,无法真正实现资产管理的账实一致。 固定资产系统作为固定资产管理的业务系统,负责资产的采购申请、验收入…

【ECCV2022】DaViT: Dual Attention Vision Transformers

DaViT: Dual Attention Vision Transformers, ECCV2022 解读&#xff1a;【ECCV2022】DaViT: Dual Attention Vision Transformers - 高峰OUC - 博客园 (cnblogs.com) DaViT&#xff1a;双注意力Vision Transformer - 知乎 (zhihu.com) DaViT: Dual Attention Vision Trans…

计算机右上角无法搜索,win10系统,文件夹右上角的搜索栏点击无反应,无法输入怎么办?...

具体方法如下&#xff1a; 1、在win10系统上按winR键打开运行原版win10系统下载&#xff0c;输入regedit&#xff0c;如下图所示&#xff1a; 2、打开注册表之后原版win10系统下载&#xff0c;点击HKEY_LOCAL_MACHINE&#xff0c;如下图所示&#xff1a; 3、然后依次点击“HKEY…

wow!蛇形矩阵!但是看到最后一行我就吐血了......

&#xff08;本人是小学生哟&#xff01;&#xff09; 今天看到了一道特别BT的题目&#xff0c;蛇形矩阵。 【问题描述】(本题所有的矩阵&#xff0c;就相当于数字填入一个正方形) 一个n行n列的蛇形矩阵可由如下方法生成&#xff1a; 从矩阵的左上角&#xff08;第1行第1列&…

对WoW Shader文件的分析

Wow的渲染引擎是同时支持固定渲染管线渲染和Shader渲染管线渲染的.bls文件是wow的shader文件,分析它的实现可以学习引擎是怎样渲染的,以及如何做一个兼容固定管线和Shader管线的引擎. bls里存储的是OpenGL low-level shading language的指令,terrain1.bls,terrain2.bls,terrain…

wow服务器显示锦标赛,魔兽世界史诗钥石地下城 全球锦标赛“计时赛”指南

史诗钥石地下城全球锦标赛(MDI)春季赛的“试炼场”已经结束。全球数以千计的勇士响应号召&#xff0c;获得了进入锦标赛服务器参加“计时赛”的资格。东部赛区的地下城英雄们&#xff0c;请了解以下这些信息&#xff01; 欢迎来到锦标赛服务器 所有成功通过“试炼场”挑战的玩家…

wow转服服务器不显示,《魔兽世界》部分服务器开启免费转服 解决负载过高问题...

《魔兽世界》全新资料片“暗影国度”已于本周四正式开启&#xff0c;新版本上线导致大量玩家同时涌入游戏&#xff0c;给一些服务器造成了不小的负担。为了解决这个问题&#xff0c;提升玩家体验。今日&#xff0c;魔兽世界官方微博宣布官方为部分高负载、高排队的服务器开启了…

wow镜头模拟

3D游戏编程中&#xff0c;镜头的控制相当重要&#xff0c;不同的镜头表现&#xff0c;能给玩家完全不同的体验&#xff1b;比如《跑跑卡丁车》中的跟随镜头&#xff0c;每当甩尾的时候&#xff0c;镜头也会有相应的运动轨迹&#xff0c;如果只是单单的垂直俯视&#xff0c;那肯…

魔兽世界服务器卡 邮件寄不出去,魔兽世界怀旧服邮件收不到怎么办 WOW怀旧服邮件取不出来解决方法...

魔兽世界怀旧服邮件收不到是游戏邮箱玩法&#xff0c;玩家们邮寄金币与物品给朋友时有时候等了很久还没到达喔&#xff0c;很多玩家想知道魔兽世界怀旧服邮件收不到怎么办、WOW怀旧服邮件取不出来解决方法呢&#xff0c;跑跑车游戏网为大家带来介绍。 *魔兽世界怀旧服邮件收不到…

ROS:launch启动文件的使用方法

目录 一、launch文件结构二、launch文件语法2.1根元素2.2参数设置2.3重映射、嵌套 三、示例3.1示例一3.2示例二3.3示例三3.4示例四 一、launch文件结构 由XML语言写的&#xff0c;可实现多个节点的配置和启动。 不再需要打开多个终端用多个rosrun命令来启动不同的节点了 可自动…

Unity3D学习笔记(二十三)导入WOW角色

今天看到新闻&#xff0c;魔兽世界最新的资料片《潘达利亚的迷雾》就要在十月二日上线了。这次中国大陆服务器总算是有机会版本与全球同步&#xff0c;和世界上其他地区的玩家在Raid进度上一决高下。 作为一名几乎没有存在感的业余玩家&#xff0c;好像跟我也没有什么关系。 倒…

威固的MOM,你的WOW 「 WOW 手武之道」威固巅峰技术交流赛圆满收官

近日&#xff0c;由全球特种材料公司伊士曼旗下汽车膜品牌威固&#xff08;V-KOOL&#xff09;举办的2022威固WOW手武之道技术交流会&PK赛&#xff0c;顺利收官。来自各地服务商的多位技师光芒尽显&#xff0c;展示贴装艺术&#xff0c;分别赢得广州站、南京站、郑州站及成…

WOW!Illustrator CS6完全自学宝典pdf

下载地址&#xff1a;网盘下载 编辑推荐 由一线设计师联合打造的最详细、最权威的Illustrator自学宝典。内容完整、详细&#xff0c;实例时尚&#xff0c;视觉感超强。 内容简介 《WOW!Illustrator CS6完全自学宝典&#xff08;全彩&#xff09;》以这一系列过程为主线&#xf…

CSS3 会跳舞的三角形

会跳舞的三角形&#xff0c;这个动效使用了两个动画变换来实现&#xff0c;一个是水平方向的运动&#xff0c;一个是径向的旋转。 在两个方向的运动速度上加以一定的控制&#xff0c;就可以出来不同的舞蹈节奏感。 把这两个三角形换成CSS3卡通图片&#xff0c;可以进一步加工…

WOW制作小地图

。。。。。。。。。。。。。。。。。 原本只是想用unity自带的GUI功能实现魔兽世界的小地图效果&#xff0c;结果折腾了一个晚上。 原来的思路如下&#xff1a; 根据玩家坐标&#xff0c;计算出应显示的地图缩略图部分&#xff08;128128&#xff09;&#xff1b;用GUI遮罩将非…

wow

写博客就有积分&#xff1f; 欢迎使用Markdown编辑器 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一…

wow怎么修改服务器地址,wow如何修改登录服务器地址

wow如何修改登录服务器地址 内容精选 换一换 由裸金属服务器自动分配的网络是禁止修改的,在只有SSH登录的情况下修改,有可能会导致裸金属服务器无法连接。如果裸金属服务器存在自定义vlan网络网卡,您可以配置或修改该网卡的网络。 容器镜像服务是一种支持容器镜像全生命周期…

Depcheck 检查前端项目中未使用的依赖包

前言 随着前端项目的迭代&#xff0c;项目中一部分的依赖包可能没被项目所使用的&#xff0c;手动查找这些依赖包耗时又繁琐&#xff0c;有没有根据能够快速的帮助我们识别和清理项目中未使用的依赖包呢&#xff1f; Depcheck 简介 Depcheck 是一款用于分析项目中依赖关系的…

斩获阿里offer,这份258页面试宝典也太顶了....

测试三年有余&#xff0c;很多新学到的技术不能再项目中得到实践&#xff0c;同时薪资的涨幅很低&#xff0c;于是萌生了跳槽大厂的想法 但大厂不是那么容易进的&#xff0c;前面惨败字节&#xff0c;为此我辛苦准备了两个月&#xff0c;又从小公司开始面试了半个月有余&#…