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

文章目录

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

题目描述

  • 在 I 的基础上,分成两部分,再取 Max 就行
    在这里插入图片描述

思路 & 代码

  • 由题意可知:一种路线中,不能同时出现第一家和最后一家。
  • 那么好办了,直接分成两部分分别取:不包含第一家的部分、不包含最后一家的部分
  • 时间复杂度 O(n),空间复杂度 O(n)
class Solution {public int rob(int[] nums) {// 边界判断if(nums.length == 1){return nums[0];}// 分成两部分[0, len - 2]、[1, len - 1],取最大值return Math.max(forRob(nums, 0, nums.length - 2), forRob(nums, 1, nums.length - 1));}// 这块相当于打家劫舍Iint forRob(int[] nums, int left, int right){// 两种边界判断if(right - left == 0){return nums[left];}if(right - left == 1){return Math.max(nums[left], nums[right]);}// dp[i]:以 nums[i] 结尾的路线中,能取得的最大值int[] dp = new int[right - left + 1];// 边界处理dp[0] = nums[left];dp[1] = nums[left + 1];dp[2] = nums[left] + nums[left + 2];for(int i = 3; i < right - left + 1; i++){// 状态转移方程dp[i] = nums[left + i] + Math.max(dp[i - 2], dp[i - 3]);}// 有可能是倒数第一个,也可能是倒数第二个return Math.max(dp[right - left], dp[right - left - 1]);}
}

更新版

  • 注意三个边界判断
  • 更改了思路,当前 dp[i] = 此时可取到的最大值,不一定要取 nums[i]
class Solution {public int rob(int[] nums) {if(nums.length == 1) {return nums[0];}return Math.max(rob1(nums, 0, nums.length - 2), rob1(nums, 1, nums.length - 1));}public int rob1(int[] nums, int left, int right) {if(left == right) {return nums[left];}if(left + 1 == right) {return Math.max(nums[left], nums[right]);}int[] dp = new int[nums.length - 1];dp[0] = nums[left];dp[1] = Math.max(nums[left], nums[left + 1]);for(int i = 2; i < dp.length; i++) {dp[i] = Math.max(dp[i - 2] + nums[left + i], dp[i - 1]);}return dp[dp.length - 1];}
}

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

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

相关文章

jflash view log_塑胶产品上的“LOG”是怎么来的?

“LOG”就是我们生产出来的产品的品牌.可以是单一的字组成&#xff1b;可以是图案组成&#xff1b;也可以由字与图案一起组成。一种是我们用模具生产出来的,通过模具上加工的字体生产出来的“LOG”,从而表现在产品上。而用模具直接生产出来的“LOG”,模具上有把做“LOG”字体做…

【LeetCode笔记】337. 打家劫舍III(Java、树型动态规划)

文章目录题目描述思路 & 代码更新版题目描述 这年头当个小偷&#xff0c;都得会 dp 和二叉树了和前面的 I & II 有点不同&#xff0c;这次直接换了数据结构&#xff0c;写树来了。&#xff08;之后不会是图吧&#xff09;很厉害&#xff0c;第一次接触到树型的dp&…

andriod studio 查看项目依赖_如何实施CRM项目管理

CRM 系统实施不当&#xff0c;不仅造成经济上的损失&#xff0c;而且会给企业的经营造成严重的影响&#xff0c;甚至导致崩溃。作为典型的高风险项目&#xff0c;CRM 系统实施必须进行严格的项目管理。而项目管理的内容非常丰富。下面简单描述CRM 项目管理中几个重要的方面。CR…

【LeetCode笔记】208. 实现Trie(前缀树)(Java、前缀树)

文章目录题目描述思路 & 代码更新版题目描述 属于那种&#xff0c;敲过一遍就不会忘了的那种题&#xff0c;就是学一个新的数据结构 二十六叉树&#xff01; 思路 & 代码 isEnd 非常重要噢&#xff0c;只有正式 insert 了的单词才能被 search 到。在 Trie 中实现内…

计算机的储存容量1kb等于多少byte,1M等于多少字节?

1M等于多少字节?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;1M等于多少字节?不是1M等于多少字节&#xff0c;是1MB等于多少字节。字节(Byte /bait/ n. [C])是计算机信息技术用于计量存…

初中数学503个必考知识点_2020年中考数学必考知识点公布,考生高分、满分提分必备神器...

在孩子学习过程中&#xff0c;假设有一种“方法”&#xff0c;能让孩子成绩突飞猛进&#xff0c;你想不想掌握&#xff1f;在孩子学习过程中&#xff0c;假设有一套“系统”&#xff0c;能让孩子主动喜欢上学习&#xff0c;你想不想拥有&#xff1f;在孩子学习过程中&#xff0…

【LeetCode笔记】538. 把二叉搜索树转换为累加树(Java、二叉搜索树、递归)

文章目录题目描述思路 & 代码更新版题目描述 注意是二叉搜索树&#xff0c;可以找出顺序&#xff01;有点类似中序遍历 思路 & 代码 思路&#xff1a;当前结点 root 带着父值一直走到最右边&#xff0c;再一个个累加右值更新 root.val rightSum&#xff0c;然后以…

计算机1.1n次方等于100,1的N次方等于1,那1.01的365次方是多少?小进步助你迎来闪光时刻...

茨威格在《人类群星闪耀时》的序言中说道&#xff1a;“在一个民族内部&#xff0c;总是需要有几百万人才能产生一个天才&#xff0c;同样&#xff0c;总是需要有无数的光阴无所谓的流逝&#xff0c;才能等到一个真正具有历史意义的时刻&#xff0c;一个人类群星闪耀的时刻出现…

如何修改ant-input的高度_水质自动采样器的流量计功能如何应用?

水质自动采样器一般都具有等比例采样功能&#xff0c;根据污水流量的多少来自动调节采样量&#xff0c;对于一些性能的采样器甚至会集成内置流量计功能&#xff0c;只要用户配套一个液位变送器就可以实现明渠污水流量计的功能&#xff0c;可以说是一物两用、一举两得&#xff0…

【LeetCode笔记】26. 删除有序数组中的重复项(Java、原地)

文章目录题目描述代码 & 思路题目描述 看到群友说今天的每日是简单题&#xff0c;我啪的一下就开刷了&#xff0c;很快啊&#xff01;注意点&#xff1a;原地 & O(1)空间 代码 & 思路 有点类似移动零&#xff0c;就是把右边的有效值&#xff0c;一个个往左边推…

linux内核深度解析_十年磨一剑,第一本龙芯平台的Linux内核书来了

《用“芯”探核&#xff1a;基于龙芯的Linux内核探索解析》是一本基于龙芯平台&#xff0c;结合源代码来探索和解析Linux-5.x内核的书。市面上解析Linux 内核的经典书籍已有不少&#xff0c;尤其是被称为Linux 内核领域的“四库全书”&#xff1a;《Linux 内核设计与实现》 《L…

服务器能记录远程访问用户嘛,bat记录远程桌面连接登录信息

1.记录远程桌面的连接登录日志方法&#xff1a;:RDPlog.bat:hu 20110201:记录登陆信息echo offset mnetstat -nfor /f "tokens4 delims: " %%i in (%m%^|find "3389") do set mstsc%%iecho %date% %time:~0,-3% %USERNAME% %mstsc% >> RDPlog.txt…

【LeetCode笔记】27. 移除元素(Java、原地)

文章目录题目描述思路 & 代码更新版题目描述 打卡每日&#xff5e;感觉和昨天的每日基本上一样&#xff0c;甚至还更简单&#xff08;简单题我重拳出击&#xff01;&#xff09; 思路 & 代码 就是维护一个 nowLen&#xff0c;再遍历一次即可。 class Solution {pu…

【LeetCode笔记】124. 二叉树中的最大路径和(Java、二叉树、DFS)

文章目录题目描述思路 & 代码更新版题目描述 好家伙我可太激动了&#xff0c;第一次光速A困难题。应该是因为写过类似的二叉树的直径&#xff0c;不过这道倒是属于简单题。。面试常考题&#xff0c;刷codetop看到了就写写 思路 & 代码 递归过程是自底向上的递归过程…

jupyternotebook虚拟环境无法连接服务_详解pycharm连接远程linux服务器的虚拟环境的方法_python...

这篇文章主要介绍了pycharm连接远程linux服务器的虚拟环境的详细教程,本文通过图文并茂的形式给大家介绍的非常详细&#xff0c;对大家的学习或工作具有一定的参考借鉴价值&#xff0c;需要的朋友可以参考下一、前提条件1、确保linux服务器已经安装好虚拟环境&#xff0c;并且虚…

【LeetCode笔记】4. 寻找两个正序数组的中位数(Java、二分、递归)

文章目录题目描述思路 & 代码题目描述 算是拖了好久的题目 &#xff0c;一开始刷的时候没打算直接冲困难不过面试常客了&#xff0c;还是得冲掉&#xff0c;而且不能留下心魔嘛&#xff01;难点在于实现时间复杂度 O(log(m n))&#xff0c;显而易见得用二分法 思路 &a…

梦幻西游服务器每周几维护,梦幻西游5月6日维护公告:唯美版地图不再更新

为保证服务器的运行稳定和服务质量&#xff0c;《梦幻西游2》所有服务器将于2014年5月6日上午8:00停机&#xff0c;进行每周例行的维护工作。预计维护时间为上午8:00&#xff5e;9:30。如果在预定时间内无法完成维护内容&#xff0c;开机时间也将继续顺延。请各位玩家相互转告&…

浏览器市场占有率_全球市场占有率第一的谷歌浏览器添加对ipfs://的支持!

欢迎来到IPFS周报&#xff01;&#x1f44b;星际文件系统(IPFS)是一种新的超媒体分布式协议&#xff0c;基于内容和身份的寻址。IPFS支持创建完全分布式应用程序。它旨在使网络更快&#xff0c;更安全&#xff0c;更开放。由于这是一个非常大的项目&#xff0c;我们在每期周报中…

win10 系统地图无法定位服务器,图文修复win10系统无法打开定位服务的详细技巧...

有很多网友在使用电脑的过程总难免会遇到win10系统无法打开定位服务的情况。尽管处理方法特别的容易&#xff0c;可是也有很多朋友不知道win10系统无法打开定位服务究竟要怎么处理。我就给大家整理总结了win10系统无法打开定位服务的解决方法&#xff0c;解决起来也不难&#x…

【LeetCode笔记】41. 缺失的第一个正数(Java、哈希)

文章目录题目描述思路 & 代码题目描述 难点在于时空复杂度的要求想出最优方法&#xff0c;需要认真理解题目。 思路 & 代码 做法&#xff1a;建立一个逻辑上的哈希表&#xff0c;令 nums[i] i 1&#xff0c;比如 nums[0] 1。那么第一个不符合这个要求的元素的下…