【LeetCode笔记】198. 打家劫舍(Java、动态规划)

文章目录

  • 题目描述
  • 思路 & 代码
      • 更新版

题目描述

  • 好家伙,真是一道不符合社会主义价值观的题目
  • 不过我们还是要把这道题做了,而且还得用上动态规划
    在这里插入图片描述

思路 & 代码

  • 首先,不能打劫相邻
  • 然后,房屋都是非负整数(讲道理,之后不会出个带负数的版本把。。老恶心人了)
  • 开始做吧,用dp直接冲:
  1. 因为dp需要初始化前三个数,因此把这三个数作为特殊情况先判断
  2. 然后,考虑到第n个值,肯定在第n-2和第n-3个值之间取:第n-1不能取,第n-4还不如直接取n-2,以此类推。
  3. 更多信息见注释
class Solution {public int rob(int[] nums) {int len = nums.length;// 三种特殊情况if(len == 0){return 0;}if(len == 1){return nums[0];}if(len == 2){return Math.max(nums[1],nums[0]);}// dp[i]:以偷nums[i]结尾的情况,能得到的最大钱数int[] dp = new int[len];// dp的初始化,这三个值是固定的。dp[0] = nums[0];dp[1] = nums[1];dp[2] = nums[0] + nums[2];for(int i=3;i<len;i++){// 中间隔着一个 nums[i-1],防报警就在这里实现dp[i] = Math.max(dp[i-2],dp[i-3]) + nums[i];}// 最大值要么是倒数第一家,要么是倒数第二家return Math.max(dp[len-1],dp[len-2]);}
}

更新版

  • 我以前咋写代码这么乱。。
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[1], nums[0]);for(int i = 2; i < nums.length; i++) {dp[i] = Math.max(dp[i - 2] + nums[i], dp[i - 1]);}return dp[nums.length - 1];}
}

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

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

相关文章

【LeetCode笔记】617. 合并二叉树(Java、DFS、二叉树)

文章目录题目描述思路 & 代码更新版题目描述 貌似是面试高频题&#xff0c;显而易见的递归。 思路 & 代码 合并两棵树&#xff0c;先不考虑特殊情况&#xff0c;可以理解成&#xff1a;根结点合并&#xff0c;然后各自的左右子树继续进行合并操作。那么递归返回值肯…

linux 重定向 不换行,Ada:重定向到stdout时省略换行符(测试Put)

我正在尝试用简单的方法编写测试Ada.Text_IO.Put.为简单起见,这是一个我想测试的组合方法:procedure Say_Something isbeginPut("Something.");end Say_Something;在我的AUnit测试中,我有:procedure Test_Put (T : in out Test) ispragma Unreferenced (T);use Ada.T…

【LeetCode笔记】226. 翻转二叉树(Java、递归)

文章目录题目描述代码 & 思路更新版题目描述 感觉和合并二叉树类似&#xff0c;都是很好进行递归的问题 代码 & 思路 翻转当前结点的左、右结点对当前结点的左、右结点进行翻转函数【自底向上】 /*** Definition for a binary tree node.* public class TreeNode …

virtualbox linux 分辨率,终于搞定了VirtualBox的ubuntu分辨率问题

曾经装了ubuntu&#xff0c;但是觉得和windows切换太麻烦了&#xff0c;要重启机器&#xff0c;导致的结果是linux装上了总是不用。这次决定使用虚拟机&#xff0c;因为我用ubuntu就是ssh一下实验室的服务器&#xff0c;所以对性能没什么要求。在所里的时候看到祝师兄总用vmwar…

【LeetCode笔记】160. 相交链表(Java、链表)

文章目录题目描述思路 & 代码题目描述 感谢这道题&#xff0c;让我更加了解到Dalao们思路的nb主要是满足空间复杂度O(1)。否则用哈希表不难实现。 思路 & 代码 有相交结点的情况下&#xff0c;可以找到这么一个等式&#xff1a; // 假设链表长度为m&#xff0c;n&…

linux 离线安装nfs,ubuntu 上离线安装包制作与安装之NFS搭建

在Ubuntu上离线搭建NFS服务器一、制作离线软件包在联网且环境与你相同的电脑上 制作离线软件包注&#xff1a;先查看有没有安装nfs-utils的安装包 命令&#xff1a;# rpm -q nfs-utils1、下载软件所需deb包#sudo apt-get install nfs-kernel-server下载后安装包在/var/cache/ap…

【LeetCode笔记】152. 乘积最大子数组(Java、动态规划)

文章目录题目描述思路 & 代码更新版题目描述 考虑正数、负数和0的情况 思路 & 代码 既然是使用的动态规划&#xff0c;那么有以下几点&#xff1a; 维护什么&#xff1a;维护iMax和iMin&#xff0c;分别代表包含当前值的子数组的最大乘积 & 最小乘积什么时候转…

Linux安装winetim简单教程,[转载]wine安装最新版TIM

[版权声明&#xff1a;本文为转载&#xff0c;并按照个人实际操作步骤替换为了TIM安装&#xff0c;原文为QQ安装过程。]1. 安装wine本次教程只需要安装最新版本的wine&#xff0c;并不需要winetricks、wine-mono、wine-gecko等其他插件&#xff0c;目前经实际测试发现只运行Win…

【LeetCode笔记】283. 移动零(Java)

文章目录题目描述思路 & 代码更新版题目描述 原地操作 & 减少操作次数&#xff1a;不能直接只拷非零数&#xff0c;也不要每次都一个个推动整个数组 思路 & 代码 维护一个noZeroNums&#xff0c;代表当前循环遇到的非0数的数量第一趟先不管0的数量&#xff0c;…

c语言线程不安全错误定位,C语言中的线程安全可破坏事件触发类#

最近,我被要求实现一个类作为选择过程的一部分。我按要求做了这个节目。但是,我考试不及格。我真的很想知道我的解决方案出了什么问题。任何帮助都非常感谢。问题和我的解决方案如下实现一个线程安全类,该类在构造过程中每秒触发一个事件。需要有一个函数来查找经过的秒数。这个…

【LeetCode笔记】448. 找到所有不存在的数(Java、原地)

文章目录题目描述思路 & 代码题目描述 说实话&#xff0c;第一眼看题让我想到那道“往1 &#xff5e; 1024中加入一个数&#xff0c;用中学生也会的方法找到这个数"&#xff08;答案是 (1024! x) - 1024! &#xff09;如果没有时空复杂度限制的话&#xff0c;用哈希…

c语言中标识符和关键字,C语言(三) C 标识符和关键字

一.标识符1.标识符的作用&#xff1a;C 标识符是用来标识变量、函数&#xff0c;或任何其他用户自定义项目的名称2.标识符的规范&#xff1a;一个标识符只能以字母 A-Z 或 a-z 或下划线 _ 开始 后跟零个或多个字母、下划线和数字(0-9)&#xff0c;第二位开始也只能用 A-Z…

【LeetCode笔记】146. LRU缓存机制(Java、双向链表、哈希表)

文章目录题目描述思路 & 代码LinkedHashMap 的写法题目描述 大名鼎鼎的超高频面试题太感动&#xff0c;在这道题上花了太多时间了&#xff0c;今天终于补上博客了TvT 思路 & 代码 结构用的是&#xff1a;双向链表 哈希表。可以满足O(1)时间复杂度put()&#xff1a…

c语言random函数在vc,C++ 中随机函数random函数的使用方法

C 中随机函数random函数的使用方法一、random函数不是ANSI C标准&#xff0c;不能在gcc,vc等编译器下编译通过。 可改用C下的rand函数来实现。1、C标准函数库提供一随机数生成器rand&#xff0c;返回0&#xff0d;RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX必须至少为32767。…

计算思维c语言软件,C语言编程入门与计算思维

课程概况This specialization is designed to let you explore computational thinking and beginning C programming topics, applying those concepts to develop solutions to a variety of practical problems.The first course assumes no programming experience, and th…

simulink和c语言开发,Simulink之嵌入式C代码生成-应用层和底层的接口

今天给大家带来的仍然是基于MBD的嵌入式代码生成&#xff0c;主要把应用层和底层接口之间的代码生成配置说一下。本周末会更新功能安全相关&#xff0c;欢迎大家留言交流&#xff01;作为一个总是用C写代码的人来说&#xff0c;第一次接触到基于MBD的代码生成的时候就迫不及待的…

【LeetCode笔记】215. 数组中的第K个最大元素(Java、快排、堆排、并发快排)

文章目录题目描述思路 & 代码快排基于 Fork / Join 的并发快排针对 topK 的快排优化堆排基本堆排结合题目的堆排二刷题目描述 大名鼎鼎的TOP K&#xff0c;主要考察排序快排 & 堆排 思路 & 代码 快排 没啥好说的&#xff0c;就是快排结束后&#xff0c;返回倒…

c语言中怎么画直线,ps如何画直线 【操作流程】

大家都知道电脑使用起来非常方便&#xff0c;但遇见ps如何画直线的时候就非常头疼了&#xff0c;如果你是第一次遇到ps如何画直线&#xff0c;怎么样才能快速解决ps如何画直线带来的烦恼呢&#xff1f;小编为大家收集了很多关于ps如何画直线问题的解决方法&#xff0c;下面请看…

【LeetCode笔记】470. 用Rand7()实现Rand10()(Java、概率)

文章目录题目描述代码 & 思路更新版三刷 - 极简版题目描述 貌似是比较高频的面试题目啊&#xff0c;有学概率论内味了&#xff08;讲道理我概率论学得不好&#xff09; 代码 & 思路 先用Rand7实现RandN&#xff08;N > 10&#xff09;&#xff0c;类似进制&…

【纠错记录】本地FTP服务器无法被外部连接

问题描述 在本地主机开了个FTP服务器&#xff0c;本机可以正常访问&#xff0c;但是外部主机不能访问FTP服务器 解决方法 ① 一开始以为是服务端Xlight FTP的问题&#xff0c;检查权限并没有发现问题 ② 接着考虑到有没有可能是客户端Flash FXP的问题&#xff0c;于是尝试直…