这里将告诉您力扣题解,具体实现方法:题目描述

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。

给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

示例 1:

输入: [1,2,3,1]

输出: 4

解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。

偷窃到的最高金额 = 1 + 3 = 4 。

示例 2:

输入: [2,7,9,3,1]

输出: 12

解释: 偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。

偷窃到的最高金额 = 2 + 9 + 1 = 12 。

1、思路

先说下自己的错误思路,一看是个简单的题就自以为是了,以为就是奇数位置和偶数位置和的最大值,然而没想到[2,1,1,2]这个样例,这个样例最大值是4,所以下次做题一定要认真,不能想的太简单了。

再来说正确的思路吧:仔细想了想发现是一个简单的动态规划。把问题细化,对于第i个房间有两个选择。

选择1:偷第i个房间的钱,如果要偷的话那么就不能偷第i-1个房间,所以总金额应该是 前i-2个房间的最大值+i房间的金额。

选择2:不偷,那么结果就是前i-1个房间的最大值

得到转移方程:

dp[i] = Math.max(dp[i-1],d[i-2]+nums[i]);

对于只有一个房间,最大值就是这个房间的金额

有两个房间,就是这两个房间的最大值。

2、代码

class Solution {

public int rob(int[] nums) {

if(nums.length == 0 || nums == null) return 0;

int[] dp = new int[nums.length];

if(nums.length == 1) return nums[0];

if(nums.length == 2) return Math.max(nums[0],nums[1]);

dp[0] = nums[0];

dp[1] = Math.max(nums[0],nums[1]);

for(int i = 2; i < nums.length; i++){

dp[i] = Math.max(nums[i] + dp[i-2],dp[i-1]);

}

return dp[nums.length-1];

}

}力扣题解就为您介绍到这里,感谢您关注懒咪学编程c.lanmit.com.

本文地址:https://c.lanmit.com/bianchengkaifa/Java/56973.html

力扣有没有java_力扣题解相关推荐

  1. 力扣有没有java_力扣 APP 全新改版,史诗级增强!

    力扣 APP 全新改版,史诗级增强! 这次的改版真的是判若两人,PC 端的几乎所有功能都可以在新版 APP 中看到,并且体验更好. 不仅之前令我不爽的地方全部不见了,而且多了一些我想都没想到的好用功能 ...

  2. 20210530:力扣第53场双周赛题解

    力扣第53场双周赛题解 题目 思路与算法 代码实现 写在最后 题目 长度为三且各字符不同的子字符串 数组中最大数对和的最小值 矩阵中最大的三个菱形和 思路与算法 长度为三且各字符不同的子字符串:遍历查 ...

  3. 20200827:2020力扣第33周双周赛题解

    2020力扣第33周双周赛题解 题目一 示例 解题思路与代码实现 题目二 示例 解题思路与代码实现 题目三 解题思路与代码实现 题目四 示例 解题思路与代码实现 写在最后 题目一 题目一:千位分隔数 ...

  4. 20200727:力扣第31周双周赛题解

    力扣第31周双周赛题解 题目一:在区间范围内统计奇数数目 给你两个非负整数low和high,请你返回low和high之间(包含二者)奇数的数目 0 <= low <= high <= ...

  5. 力扣 两数相加 C语言 题解

    ** 力扣 两数相加 C语言 题解 ** 文章目录 力扣 两数相加 C语言 题解 一.完整题目 二.解题思路 二.编写代码 四.测评结果 五.总结评价 一.完整题目 给你两个非空的链表,表示两个非负的 ...

  6. LCCUP 力扣杯2020秋季编程大赛题解

    目录 1. 速算机器人 2. 早餐组合 3. 秋叶收藏集 4. 快速公交 5. 追逐游戏 1. 速算机器人 小扣在秋日市集发现了一款速算机器人.店家对机器人说出两个数字(记作 x 和 y),请小扣说出 ...

  7. 统计扣分加分java_再也不怕违章扣分了,驾照也能够加分,最高+21分!快来看怎么加...

    想必大家知道交通违章行为会被扣分的,而且扣满了12分还要重新去学科一,更严重的还会吊销驾照,而我们知道开车上路难免会被扣分,一扣再一扣12分就没有了,很多车主都担心自己的分扣着扣着就扣完了.有驾照的朋 ...

  8. 可以扣6分也可以扣0分?闯红灯也是有技巧的

    自从2013年新交通法颁布后交通规则变得非常严厉,新规规定,2013年1月1日闯红灯由原来的罚款200元扣3分改为罚款200元扣6分.当然,我们绝不鼓励任何闯红灯的行为,不过如果一不留神"几 ...

  9. python力导向图论文_力导向图(关系图) echarts的运用

    Echarts关系图-力引导布局 需要做一个树形图,可以查看各个人员的关系. 可伸缩的力引导图-失败 刚开始,打算做一个可展开和伸缩的,搜索时候发现CSDN有一篇美美哒程序媛写的Echarts For ...

最新文章

  1. php分享二十八:mysql运行中的问题排查
  2. 在同一页面显示多个JavaScript统计图表
  3. (一)FlexViewer之整体框架解析
  4. Visual Studio配置64/32位汇编程序开发环境
  5. 基于Cookie的单点登录(SSO)系统介绍
  6. matlab 线性分析,线性系统稳定性分析的MATLAB分析方法.doc
  7. 任天堂残酷马里奥游戏
  8. 11年瑞纳手动挡值多少钱_10年瑞纳值多少钱(10年的手动高配瑞纳,跑了4万公里,现在值多少钱?)...
  9. 【AI人工智能学习】GitHub 上适合初学者的 10 个最佳开源 AI 项目
  10. app ui ios airtest +python 环境搭建
  11. 湖北智禾教育:淘宝店铺如何找货源?
  12. 【前端】HTML标签基础复习笔记
  13. WPS word表格中的神秘的底色
  14. vue中奖名单,新闻列表跑马灯,无缝上下滚动
  15. python 获取昨天的时间
  16. 没流泪,不代表没眼泪;
  17. proteus教程——读写AT24C02
  18. 龙世界java游戏_我的世界:当Notch在6年后重回mc,会发生什么?萌新的像个弟弟...
  19. 一周开发一个轻量级客服系统(代码开源)
  20. 如何用电子表格计算考试成绩各科前20名均分,计算机合格率?

热门文章

  1. 水表模型更新--170323
  2. 杭电1713相遇周期
  3. 仿站小技巧20190409
  4. kafka集群安装部署
  5. cocos2d-x之猜数字游戏
  6. 软件自动化测试题,软件自动化测试模拟题.doc
  7. 嵌入式操作系统内核原理和开发(等值block内存池设计)
  8. 随想录(用好自己的时间)
  9. 【文件包含、宏、条件编译】(学习笔记21--预处理命令)
  10. hbase中为何不能向表中插入数据_生产环境使用HBase,你必须知道的最佳实践 | 百万人学AI...