训练营四十八天 | 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

198.打家劫舍  

不要忘记空数组和数组长度为1的情况单独考虑

和前两个状态有关

代码随想录

class Solution {public int rob(int[] nums) {if(nums == null && nums.length == 0) return 0;if(nums.length == 1) return nums[0];int[] dp = new int[nums.length];//int[] dp = new int[2];dp[0] = nums[0];//和前两个状态有关 所以初始化前两个0和1dp[1] = Math.max(nums[0], nums[1]);//int res;for(int i = 2; i < nums.length; i++) {dp[i] = Math.max(dp[i-1], dp[i-2] + nums[i]);//考虑前一个与考虑前两个//res = Math.max(dp[1], dp[0] + nums[i]);//dp[0] = dp[1];//dp[1] = res;}return dp[nums.length - 1];//return res;}
}

 213.打家劫舍II  

考虑两种情况

只考虑首或者只考虑尾

代码随想录

class Solution {public int rob(int[] nums) {if (nums == null || nums.length == 0)return 0;if (nums.length == 1)return nums[0];int num1 = robNum(nums, 0, nums.length - 1);//只考虑头不考虑尾int num2 = robNum(nums, 1, nums.length);//不考虑头只考虑尾return Math.max(num1, num2);//两者取最大}public int robNum(int[] nums, int start, int end) {int x = 0, y = 0, z = 0;for(int i = start; i < end; i++) {z = Math.max(y, x + nums[i]);x = y;y = z;}return z;}
}

 337.打家劫舍III  

好难

二叉树 后序遍历 递归

递归三部曲:1.参数和返回值 2.终止条件 3.单层递归逻辑

代码随想录

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public int rob(TreeNode root) {int[] res = robAction(root);return Math.max(res[0], res[1]);//取大值}public int[] robAction(TreeNode root) {int[] res = new int[2];if(root == null) return res;int[] left = robAction(root.left);int[] right = robAction(root.right);res[0] = Math.max(left[0], left[1]) + Math.max(right[0], right[1]);//不偷res[1] = root.val + left[0] + right[0];//偷return res;}
}

 

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

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

相关文章

易观察|2024年金融科技新趋势揭秘,大模型发展有望落地

2023年&#xff0c;是金融科技市场持续向好的一年&#xff0c;受政策和市场的双重推动&#xff0c;金融科技企业信心大增&#xff0c;未来发展信心指数平均分提升到82.8&#xff0c;创下近三年来的新高。而随着市场、政策和经济的企稳预期&#xff0c;以及GPT大模型技术的迅猛发…

【打卡】牛客网:BM90 最小覆盖子串

题目&#xff1a; BM65 最长公共子序列(二)&#xff1a; 找二者的相同部分&#xff0c;该部分对于二者可以不连续排列的&#xff08;但是是有序的&#xff09;。 BM66 最长公共子串 找二者的相同部分&#xff0c;该部分对于二者是连续排列的。 本题&#xff1a;BM90 最小覆盖…

什么是DDOS高防ip?DDOS高防ip是怎么防护攻击的

随着互联网的快速发展&#xff0c;网络安全问题日益突出&#xff0c;DDoS攻击和CC攻击等网络威胁对企业和网站的正常运营造成了巨大的威胁。为了解决这些问题&#xff0c;高防IP作为一种网络安全服务应运而生。高防IP通过实时监测和分析流量&#xff0c;识别和拦截恶意流量&…

PattPatel-“Introduction to Computing Systems“(4)期末样卷题目解析:C语言递归

C语言的递归我觉得最主要的还是要把Patt&Patel的部分好好理解下&#xff08;因为有和硬件结合的部分&#xff09;&#xff0c;但因为今天就考试&#xff08;来不及做这样的事情&#xff09;&#xff0c;先把之前模拟卷的题目给尝试弄明白&#xff0c;然后考完试之后继续学习…

vue-ESlint代码规范及修复

1. 介绍 ESLint:是一个代码检查工具&#xff0c;用来检查你的代码是否符合指定的规则(你和你的团队可以自行约定一套规则)。 在创建项目时&#xff0c;我们使用的是 JavaScript Standard Style 代码风格的规则。 规范网址&#xff1a;https://standardjs.com/rules-zhcn.htm…

美易官方:仅差8万辆,特斯拉2023年全球销量接近奥迪

特斯拉在2023年全球销量仅差8万辆就能追平奥迪&#xff0c;这一消息引起了汽车行业的广泛关注。作为电动汽车市场的领头羊&#xff0c;特斯拉一直以创新的技术和设计引领着汽车行业的发展。而奥迪作为传统豪华汽车品牌&#xff0c;也在不断探索和尝试新的发展路径。 特斯拉在20…

力扣-刷MySQL(详细解析)

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…

【五】CocosCreator-CCScheduler.js源码分析

PS&#xff1a;只是看源码学习过程中把认为重要的内容以笔记的形式记录下来。 【1】HashTimerEntry&#xff1a;用于保存指定target的事件定时器相关参数的数据结构。 【2】_hashForTimers&#xff1a;targetId作为key&#xff0c;HashTimerEntry【2】对象作为value的hash数组…

uniApp 顶部导航栏右侧添加文字按钮

{"path" : "pages/allin/MessageCenter/MessageCenter","style" : {"navigationBarTitleText": "消息中心","enablePullDownRef…

torch: 返回最大的几个值--topk()

torch.topk() 是 PyTorch 中的一个函数&#xff0c;用于从张量&#xff08;tensor&#xff09;中选取最大的 k 个值及其对应的索引。这个函数对于需要找到最大值或者对数据进行排序的场景非常有用。 函数的基本语法如下: torch.topk(input, k, dimNone, largestTrue, sortedT…

如何在Eclipse IDE中安装TestNG插件

目录 使用Eclipse Marketplace安装TestNG插件 通过输入URL安装TestNG 1.点击安装新软件 2.输入URL以安装TestNG 3.遵循正常的安装过程 4.重新启动Eclipse 在Eclipse中安装TestNG插件的视频 在这篇文章中&#xff0c;我们将介绍如何在Eclipse IDE中安装TestNG插件&#x…

JVM-Arthas高效的监控工具

一、arthas介绍 3.选择监控哪个进程 4.进入具体进程 二、arthas的基础命令与基本操作 1.查询包含Java的系统属性&#xff1a; 命令&#xff1a;sysprop |grep java 1.查询不含Java的系统属性&#xff1a; 命令&#xff1a;sysprop | grep -v java 3.打印历史命令 命令&#…

Android 自动滚动的RecyclerView,手动滑动和自动滑动无缝衔接,手动滑动时数据不重复

概要 做一个自动滑动的列表&#xff0c;用于展示聊天记录或者通知栏信息等&#xff0c;还是使用主流的RecyclerView来做。网上有很多案例&#xff0c;但当手动滑动时会一直无限循环&#xff0c;数据重复的出现&#xff0c;如果想要自动滑动时能无限循环&#xff0c;手动滑动时又…

Vue Grid Layout ( 栅格布局 )

Vue Grid Layout -️ 适用 Vue.js 的栅格布局系统 (相关使用记录) 参考文章~朴&#xff1a;shu参考文章我说爱你啊中文文档官方文档 安装 npm install vue-grid-layout --save 或yarn add vue-grid-layout导入组件 import VueGridLayout from vue-grid-layout;注册组件 expor…

C语言从入门到实战——结构体与位段

结构体与位段 前言一、结构体类型的声明1.1 结构体1.1.1 结构的声明1.1.2 结构体变量的创建和初始化 1.2 结构的特殊声明1.3 结构的自引用 二、 结构体内存对齐2.1 对齐规则2.2 为什么存在内存对齐2.3 修改默认对齐数 三、结构体传参四、 结构体实现位段4.1 什么是位段4.2 位段…

基于springboot的流浪动物救助管理系统

&#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;一 、设计说明 1.1研究背景 随着…

MStart | MStart开发与学习

MStart | MStart开发与学习 1.学习 1.MStart |开机LOG显示异常排查及调整

windows平台高dpi介绍

flutter在windows平台如何自定义dpi设置 系统层级的支持(windows平台对高dpi的支持) 主要有两点&#xff1a; 设置系统的缩放比例 (系统及系统自带的app会根据这个设置来进行缩放&#xff1b;自己的app需要结合自己设置的dpi awareness来实现对应的dpi支持)设置进程的dpi aw…

Linux系统中负载较高问题排查思路与解决方法

Load 就是对计算机干活多少的度量&#xff0c;Load Average 就是一段时间&#xff08;1分钟、5分钟、15分钟&#xff09;内平均Load。 一、Load分析&#xff1a; 情况1&#xff1a;CPU高、Load高 通过top命令查找占用CPU最高的进程PID&#xff1b;通过top -Hp PID查找占用CPU…

BIOS知识枝桠——RAID 磁盘阵列

文章目录 前言一、RAID介绍二、RAID等级分类1.RAID02.RAID13.RAID24.RAID3和RAID45.RAID5和RAID66.RAID77.RAID10 BIOS下组建RAID 前言 假设存在多块磁盘&#xff0c;如果不组建阵列&#xff0c;磁盘与磁盘之间是没有任何关系的。磁盘A和B&#xff0c;放在A中的文件与B磁盘没有…