Java实现 LeetCode 213 打家劫舍 II(二)
2023-09-14 08:58:06 时间
213. 打家劫舍 II
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。
示例 1:
输入: [2,3,2]
输出: 3
解释: 你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。
示例 2:
输入: [1,2,3,1]
输出: 4
解释: 你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。
偷窃到的最高金额 = 1 + 3 = 4 。
class Solution {
public int rob(int[] nums) {
if(nums==null||nums.length==0)
return 0;
if(nums.length==1)
return nums[0];
int[] dp1 = new int[nums.length];
int[] dp2 = new int[nums.length];
dp1[1] = nums[0]; //从第1个房屋开始偷
dp2[1] = nums[1]; //从第2个房屋开始偷
for(int i=2;i<nums.length;i++) {
dp1[i] = Math.max( dp1[i-2]+nums[i-1],dp1[i-1] );
dp2[i] = Math.max( dp2[i-2]+nums[i], dp2[i-1]);
}
return Math.max( dp1[nums.length-1], dp2[nums.length-1] );
}
}
相关文章
- java static 变量存在哪_Java中的静态方法和静态变量存储在哪里?
- java局域网发送文件_Java如何实现局域网文件传输代码案例分享
- java分层打印二叉树_基于Java的二叉树层序遍历打印实现
- java 实现多态_Java多态的实现原理
- java后台怎么解密md5,Java md5 密码加解密
- java 阶乘算法_Java 实现阶乘算法
- java无法获取服务器上路径,JAVA获取服务器路径的步骤
- java 随机数算法_Java随机数算法原理与实现方法实例详解
- java 标准输出与标准错误 out与 err 区别 用法 联系 java中的out与err区别 System.out和System.err的区别 System.out.println和System.err.println的区别 Java重定向System.out和System.err详解编程语言
- 实现使用Java代码实现MySQL数据库连接(java连接mysql数据库代码)
- Java实现MSSQL数据库连接(java连接mssql)
- Linux下Java开发:给初学者的指引(linux下java编程)
- 玩转Linux:Java开发入门指南(linux上开发java)
- Java下使用Redis进行高效缓存优化(Redis缓存java)
- 实现Java实现Redis集合的技术研究(redis集合java)
- MySQL与Java的结合:实现强大的数据持久化功能(mysql与java)
- Java面试中的Redis题目剖析(java面试题redis)
- 使用Redis优化Java开发的关键技巧(redis与java开发)
- Java锁表与Oracle数据库协调实现数据安全(java锁表oracle)
- 从Java应用程序中实现Oracle配置连接(java配置oracle)
- Java 离开 Oracle,新的旅程即将开始(java没有Oracle)
- Oracle中实现Java程序设计的极限可能性(oracle中的java)
- Oracle搭建Java开发环境的步骤(oracle中java)