力扣labuladong一刷day11拿下打家劫舍问题共3题

力扣labuladong一刷day11拿下打家劫舍问题共3题

文章目录

      • 力扣labuladong一刷day11拿下打家劫舍问题共3题
      • 一、198. 打家劫舍
      • 二、213. 打家劫舍 II
      • 三、337. 打家劫舍 III

一、198. 打家劫舍

题目链接:https://leetcode.cn/problems/house-robber/
思路:打劫必须隔1家,定义dp[i]表示截止到第i家,所能抢到的最大值。
递推公式 dp[i] = max(dp[i-1], dp[i-2]+nums[i]);
如果当前这家不偷,最大值就是dp[i-1],如果偷就是要隔一家dp[i-2]+nums[i]

class Solution {public int rob(int[] nums) {if (nums.length == 1) return nums[0];int[] dp = new int[nums.length];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[nums.length-1];}
}

由于只用到了前一天和前两天,所以还可以优化一下空间。

public int rob(int[] nums) {if (nums.length == 1) return nums[0];int a = nums[0], b= Math.max(nums[0], nums[1]);for (int i = 2; i < nums.length; i++) {int c = Math.max(b, a+nums[i]);a = b;b = c;}return b;}

二、213. 打家劫舍 II

题目链接:https://leetcode.cn/problems/house-robber-ii/
思路:直接划分为两个区间然后分别计算再比较。即nums[0, len-2] 和 nums[1, len-1]

class Solution {public int rob(int[] nums) {if (nums.length == 1) return nums[0];if (nums.length == 2) return Math.max(nums[0], nums[1]);int max = 0, a = nums[0], b = Math.max(nums[0], nums[1]);for (int i = 2; i < nums.length - 1; i++) {int c = Math.max(b, a+nums[i]);a = b;b = c;}max = b;a = nums[1];b = Math.max(nums[1], nums[2]);for (int i = 3; i < nums.length; i++) {int c = Math.max(b, a+nums[i]);a = b;b = c;}return max > b ? max : b;}
}

三、337. 打家劫舍 III

题目链接:https://leetcode.cn/problems/house-robber-iii/
思路:定义nums[2] 记录每个节点偷与不偷的状态。

class Solution {public int rob(TreeNode root) {int[] ints = f1(root);return Math.max(ints[0], ints[1]);}int[] f1(TreeNode root) {int[] nums = new int[2];if (root == null) {return nums;}int[] left = f1(root.left);int[] right = f1(root.right);nums[0] = Math.max(left[0], left[1]) + Math.max(right[0], right[1]);nums[1] = root.val + left[0] + right[0];return nums;}
}

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

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

相关文章

【项目管理】PMO技能树21项参照

导读&#xff1a;PMO技能树让你能够有全局视野&#xff0c;让你对照着检查自己的能力是否掌握。技能树提供了构建个人知识体系参照和地图导航&#xff0c;不至于迷失方向。 目录 1、PMO层次概览 2、技能树 2.1 项目管理流程 2.2 项目组合管理 2.3 风险管理 2.4 项目资源管…

leetcode做题笔记2736. 最大和查询

给你两个长度为 n 、下标从 0 开始的整数数组 nums1 和 nums2 &#xff0c;另给你一个下标从 1 开始的二维数组 queries &#xff0c;其中 queries[i] [xi, yi] 。 对于第 i 个查询&#xff0c;在所有满足 nums1[j] > xi 且 nums2[j] > yi 的下标 j (0 < j < n) …

Redis:java和SpringBoot中使用Redis

目录 Jedis操作Redis6SpringBoot整合Redis Jedis操作Redis6 Jedis是java开发的操作redis的工具包。 引入maven依赖&#xff1a; <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.2.1</ve…

振南技术干货集:比萨斜塔要倒了,倾斜传感器快来!(6)

注解目录 1、倾斜传感器的那些基础干货 1.1 典型应用场景 &#xff08;危楼、边坡、古建筑都是对倾斜敏感的。&#xff09; 1.2 倾斜传感器的原理 1.2.1 滚珠式倾斜开关 1.2.2 加速度式倾斜传感器 1)直接输出倾角 2)加速度计算倾角 3)倾角精度的提高 &#xff08;如果…

WPF中如何在MVVM模式下关闭窗口

完全来源于十月的寒流&#xff0c;感谢大佬讲解 使用Behaviors <Window x:Class"Test_03.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:b"http://schemas.microsoft.com/xaml/behaviors"xmlns:x&quo…

使用ADS进行serdes仿真时,Tx_Diff中EQ的设置对发送端波形的影响。

研究并记录一下ADS仿真中Tx_Diff的EQ设置。原理图如下&#xff1a; 最上面是选择均衡方法Choose equalization method&#xff1a;Specify FIR taps&#xff0c;Specify de-emphasis和none。 当选择Specify de-emphasis选项时&#xff0c;下方可以输入去加重具体的dB值&#x…

市级奖项+1,持安获「创业北京」创业创新大赛优秀奖!

2274个创业项目参赛 历经五个多月的激烈角逐 第六届“创业北京”创业创新大赛 终于圆满落下帷幕 持安科技在北京市总决赛中再创佳绩&#xff01; 荣获制造业赛道优秀奖 本次大赛由北京市人力资源和社会保障局、北京市发展和改革委员会等11家单位联合主办&#xff0c;以“创…

hive sql 取当周周一 str_to_date(DATE_FORMAT(biz_date, ‘%Y%v‘), ‘%Y%v‘)

select str_to_date(DATE_FORMAT(biz_date, %Y%v), %Y%v)方法拆解 select DATE_FORMAT(now(), %Y%v), str_to_date(202346, %Y%v)

【PG】PostgreSQL高可用方案repmgr管理之配置文件

1 配置文件 1.1 配置文件格式 repmgr.conf是一个纯文本文件&#xff0c;每行包含一个参数/值组合。 空格是无关紧要的&#xff08;除了在带引号的参数值内&#xff09;&#xff0c;并且空行将被忽略。#将该行的其余部分指定为注释。不是简单标识符或数字的参数值应该用单引号…

鉴源实验室 | DoIP协议网络安全攻击

作者 | 付东杰 上海控安可信软件创新研究院工控网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 背 景 随着科技的迅猛发展&#xff0c;汽车行业正经历着前所未有的数字化变革。现代汽车中使用70多个电子控制单元&#x…

knex事务

1.数据库事务 在执行SQL语句时&#xff0c;某些业务要求&#xff0c;一系列操作必须全部执行&#xff0c;而不能仅执行一部分。例如&#xff0c;一个转账操作&#xff1a; 从id1的账户给id2的账户转账100元 -- 第一步&#xff1a;将id1的A账户余额减去100 UPDATE accounts S…

uniapp中的H5页面微信浏览器中禁止下拉出现网页由xxx.xxxxx.com提供,QQ浏览器X5内核提供技术支持这个

在App.vue文件中的onLaunch函数新增如下 onLaunch: function () {console.log(App Launch);document.body.addEventListener(touchmove,function (e) {e.preventDefault();},{ passive: false });},

数据的存储--MongoDB文档存储

MongoDB文档存储 NoSQL&#xff0c;全称为Not Only SQL&#xff0c;意为不仅仅是SQL&#xff0c;泛指非关系型数据库。NoSQL是基于键值对的&#xff0c;而且不需要经过SQL层的解析&#xff0c;数据之间没有耦合性&#xff0c;性能非常高。 非关系行数据库又可细分如下。 键值存…

【入门篇】1.2 Redis 客户端之 Jedis 详解和示例

文章目录 1. 简介2. Jedis的依赖下载Jedis导入Jedis jar包配置Redis服务器的地址和端口 3. Jedis 的基本操作连接 Redis 服务器设置和获取字符串类型的键值对判断键是否存在删除键设置键的过期时间 4. Jedis 的数据类型操作字符串类型列表类型集合类型哈希类型有序集合类型 5. …

YOLOv5独家原创改进:最新原创WIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能精度

💡该教程为属于《芒果书》📚系列,包含大量的原创首发改进方式, 所有文章都是全网首发原创改进内容🚀 💡本篇文章为YOLOv5独家原创改进:独家首发最新原创WIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能精度。 💡对自己数据集改进有效…

数据结构-插入排序实现

文章目录 1、描述2、代码实现3、结果4、复杂度 1、描述 待排序的数组分为已排序、未排序两部分; 初始状态时&#xff0c;仅有第一个元素为已排序序列&#xff0c;第一个以外的元素为未排序序列&#xff1b; 此后遍历未排序序列&#xff0c; 将元素逐一插入到已排序的序列中&am…

12.Oracle的索引

Oracle11g的索引 一、什么是索引二、索引的分类三、索引的语法四、分析索引四、索引的作用及使用场景 一、什么是索引 在Oracle数据库中&#xff0c;索引是一种特殊的数据结构&#xff0c;用于提高查询性能和加速数据检索。索引存储了表中某列的值和对应的行指针&#xff0c;这…

py 异步

Python中的异步编程通常使用多线程或异步IO库来实现。 多线程是一种并行处理方式&#xff0c;可以同时执行多个任务&#xff0c;但需要手动管理线程之间的同步和通信。Python提供了threading模块来实现多线程&#xff0c;但多线程在处理IO密集型任务时可能会受到阻塞&#xff…

批量替换WordPress文章内图片链接

在WordPress使用过程中&#xff0c;如果中途更换了域名&#xff0c;原先文章内的图片使用的是原来的域名&#xff0c;就会造成文章页里面的图片链接无法显示。如果从后台文章挨个修改就比较麻烦。可以通过数据库进行批量替换即可。 使用 PHPMyadmin 打开 数据库&#xff0c;登…

WPF xaml Command用法介绍

WPF (Windows Presentation Foundation) 中的命令设计模式是一种用于分离用户界面逻辑和业务逻辑的方法。在WPF中&#xff0c;这种模式通过命令接口&#xff08;如 ICommand&#xff09;实现&#xff0c;使得用户界面组件&#xff08;如按钮、菜单项等&#xff09;可以触发不直…