[Leedcode][JAVA][第198题][打家劫舍][动态规划]

【问题描述】[简单]

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]
输出: 4
解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。

【解答思路】

1. 动态规划

第 1 步:设计状态
int[] dp = new int[len + 1];
第 2 步:状态转移方程
dp[n] = MAX( dp[n-1], dp[n-2] + num )
第 3 步:考虑初始化
dp[0] = 0;
dp[1] = nums[0];
第 4 步:考虑输出
dp[len]
第 5 步:考虑是否可以状态压缩
方法2
时间复杂度:O(N) 空间复杂度:O(N)

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

与上面方法略有不同

class Solution {public int rob(int[] nums) {int n = nums.length;// 处理边界条件。if (n == 0) {return 0;}if (n == 1) {return nums[0];}// 定义dp数组,按照状态转移方程递推。int[] dp = new int[n];dp[0] = nums[0];dp[1] = Math.max(nums[0], nums[1]);for (int i = 2; i < n; i++) {dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i]);}return dp[n - 1];}
}
2. 动态规划压缩空间

参照着 dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]) 这个方程来写,

用 a 表示 i - 2,b 表示 i - 1,

因此上面的方程变成了dp[i] = max(b, a + nums[i]),

然后下一轮循环的时候:
i - 1 就变成了i - 2,因此现在需要把 b 赋值给 a;
i 就变成了 i - 1,因此现在需要把 dp[i] 赋值给 b。

时间复杂度:O(N) 空间复杂度:O(1)

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

【总结】

1.dp数组设置多一个 在前面添加后者后面添加

int[] dp = new int[len + 1];

2.动态规划流程

第 1 步:设计状态
第 2 步:状态转移方程
第 3 步:考虑初始化
第 4 步:考虑输出
第 5 步:考虑是否可以状态压缩

3.动态规划做多了 第一次自己写了出来,可惜初始化没有想全面

转载链接:https://leetcode-cn.com/problems/house-robber/solution/liang-ge-yue-0ji-chu-cong-an-mo-shi-zhuan-xing-zi-/

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

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

相关文章

图像质量评价之数据库

视频质量专家组&#xff08;Video Quality Experts Group, VQEG&#xff09;发起的评价算法性能校准项目的主要思想是通过组织主观实验获取图像的主观质量&#xff0c;以主客观质量的一致性来判断客观评价算法的性能。目前常用的数据主要有以下8种&#xff1a; 1&#xff09;LI…

html:(17):img标签和表单标签

认识<img>标签&#xff0c;为网页插入图片 在网页的制作中为使网页炫丽美观&#xff0c;肯定是缺少不了图片&#xff0c;可以使用<img>标签来插入图片。 语法&#xff1a; <img src"图片地址" alt"下载失败时的替换文本" title "提…

技嘉服务器主板装系统,技嘉主板bios设置图解教程

BIOS(基本输入/输出系统)是被固化在计算机CMOS RAM芯片中的一组程序&#xff0c;为计算机提供最初的、最直接的硬件控制。正确设置BIOS可大大提高系统性能。技嘉主板bios设置方法是什么&#xff0c;很多人很多时候都需要进入bios设置&#xff0c;对于电脑高手来说&#xff0c;这…

[剑指offer][JAVA]面试题第[07]题[重建二叉树][递归]

【问题描述】[中等] 输入某二叉树的前序遍历和中序遍历的结果&#xff0c;请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如&#xff0c;给出前序遍历 preorder [3,9,20,15,7] 中序遍历 inorder [9,3,15,20,7] 返回如下的二叉树&#xff1a;3/ …

html:(18):文本输入框,密码输入框,文本域

文本输入框、密码输入框 当用户要在表单中键入字母、数字等内容时&#xff0c;就会用到文本输入框。文本框也可以转化为密码输入框。 语法&#xff1a; <form><input type"text/password" name"名称" value"文本" /> </form&g…

ABAP:从例子学习ABAP

1、插入内表行: *插入内表行: DATA: BEGIN OF man, name(20) TYPE c, high TYPE p DECIMALS 2, weight TYPE p DECIMALS 2, END OF man. DATA: man1 LIKE TABLE OF man. man-name 张参. man-high 1.68. man-weight 120. INSERT man INTO TABLE man1. man-name 刘志. man-hi…

文件共享服务器地址格式,文件共享服务器配置

文件共享服务器配置 内容精选换一换提供多个业务节点提供共享的日志输出目录&#xff0c;方便分布式应用的日志收集和管理。业务特点&#xff1a;多个业务主机挂载同一个共享文件系统&#xff0c;并发打印日志。大文件小I/O&#xff1a;单个日志文件比较大&#xff0c;但是每次…

[剑指offer]面试题第[28]题[Leedcode][JAVA][第101题][对称二叉树][队列][递归]

【问题描述】[简单] 给定一个二叉树&#xff0c;检查它是否是镜像对称的。例如&#xff0c;二叉树 [1,2,2,3,4,4,3] 是对称的。1/ \2 2/ \ / \ 3 4 4 3【解答思路】 1. 递归 时间复杂度&#xff1a;O(N) 空间复杂度&#xff1a;O(1) public boolean isSymmetric(TreeNod…

html:(19):单选框,复选框,下拉列表框

使用单选框、复选框&#xff0c;让用户选择 在使用表单设计调查表时&#xff0c;为了减少用户的操作&#xff0c;使用选择框是一个好主意&#xff0c;html中有两种选择框&#xff0c;即单选框和复选框&#xff0c;两者的区别是单选框中的选项用户只能选择一项&#xff0c;而复…

[Leedcode][JAVA][第84题][柱状图中最大的矩形][暴力][单调栈]

【问题描述】[困难] 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。以上是柱状图的示例&#xff0c;其中每个柱子的宽度为 1&#xff0c;给定的高度为 […

html:(20):使用下拉框进行多选和使用提交按钮提交

使用下拉列表框进行多选 下拉列表也可以进行多选操作&#xff0c;在<select>标签中设置multiple"multiple"属性&#xff0c;就可以实现多选功能&#xff0c;在 windows 操作系统下&#xff0c;进行多选时按下Ctrl键同时进行单击&#xff08;在 Mac下使用 Comm…

html:(21):重置按钮和label标签

使用重置按钮&#xff0c;重置表单信息 当用户需要重置表单信息到初始时的状态时&#xff0c;比如用户输入“用户名”后&#xff0c;发现书写有误&#xff0c;可以使用重置按钮使输入框恢复到初始状态。只需要把type设置为"reset"就可以。 语法&#xff1a; <i…

HDU1005

本题题意就是求第&#xff4e;项 符合 &#xff46;(n) ( A*f(n-1)B*f(n-2) )MOD7 的值是多少 这道题可以用规律求解 也可以用矩阵快速幂求解 以下是快速幂的求解方法&#xff1a; #include<bits/stdc.h> using namespace std; struct m {int a[2][2]; }ori,res;…

[Leedcode][JAVA][第1431题][拥有糖果最多的孩子][暴力][六一儿童节]

【问题描述】[中等] 给你一个数组 candies 和一个整数 extraCandies &#xff0c;其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子&#xff0c;检查是否存在一种方案&#xff0c;将额外的 extraCandies 个糖果分配给孩子们之后&#xff0c;此孩子有 最多 的糖果…

生产系统服务器是啥意思,生产系统服务器主机名怎么看

生产系统服务器主机名怎么看 内容精选换一换部署组复制的最常见方法是使用多个服务器实例&#xff0c;以提供高可用性。也可以在本地部署组复制&#xff0c;例如出于测试目的。注意:组复制通常部署在多个主机上&#xff0c;因为这样可以确保提供高可用性。本地部署不适用于生产…

html:(22):认识css样式和css的优势

认识CSS样式 CSS全称为“层叠样式表 (Cascading Style Sheets)”&#xff0c;它主要是用于定义HTML内容在浏览器内的显示样式&#xff0c;如文字大小、颜色、字体加粗等。 如下列代码&#xff1a; p{font-size:12px;color:red;font-weight:bold; } 使用CSS样式的一个好处是…

hana-banach定理

1. x1不是X除开G以外所有的空间 2.如果极大元不是全空间的话&#xff0c;根据前面的讨论&#xff0c;还可以延拓&#xff0c;这就和极大矛盾了转载于:https://www.cnblogs.com/china520/p/10388862.html

boa服务器实现温湿度显示,SMT车间温湿度分布式远程监控系统的设计

随着SMT生产工艺技术的提高&#xff0c;生产车间对环境的温湿度提出了温度253℃。湿度45&#xff05;RH&#xff5e;65&#xff05;RH的要求。为了达到这样的温湿度要求&#xff0c;就不仅需要提高温湿度传感器的精度&#xff0c;而且要求现场的管理人员能够实时的查看现场的环…

[剑指offer][JAVA]面试题第[09]题[用两个栈实现队列][LinkedList]

【问题描述】[简单] 用两个栈实现一个队列。队列的声明如下&#xff0c;请实现它的两个函数 appendTail 和 deleteHead &#xff0c;分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素&#xff0c;deleteHead 操作返回 -1 )示例 1&#xff1a;输入&am…

html:(23):css代码语法和css注释语法

CSS代码语法 css 样式由选择符和声明组成&#xff0c;而声明又由属性和值组成&#xff0c;如下图所示&#xff1a; 选择符&#xff1a;又称选择器&#xff0c;指明网页中要应用样式规则的元素&#xff0c;如本例中是网页中所有的段&#xff08;p&#xff09;的文字将变成蓝色&…