这篇page是针对leetcode上的198.打家劫舍所写的。小尼先简单的说明一下这道题的意思,就是有几个房间是连续的,每个房间里面都可以偷一定的现金,然后如果两个相邻的房间被同一个晚上被偷了,那么系统就会自动报警,需要得到再不报警的前提下,我们可以偷到的最大的金额是多少。

小尼简单的跟大家分析一下小尼对这道题的看法,其实这道题就是一个简单的动态规划的问题,其实就是需要我们分析出最佳的结果,我们分析一下dp五部曲:

1、确定dp数组以及下标的含义:dp[i]包含下标i以内的防务,最多可以偷窃的金额为dp[i]

2、确定递推公式:就是决定dp[i]的因素就是第i个房间偷还是不偷,如果此时我们偷第i个房间,那么dp[i] = dp[i-2] + nums[i],即:第i-1房一定是不考虑的,找出下标i-2以内的房,得到最多可以偷窃的金额;如果我们不偷第i个房间,那么dp[i] = dp[i-1],即考虑第i-1个房,然后我们只需要在这两个房间里取到最大值:即dp[i] = max(dp[i - 2] + nums[i] , dp[i - 1])

3、dp数组如何初始化:很显然,dp[0] = nums[0], dp[1] = max(nums[0], nums[1])

4、确定遍历顺序:dp[i]是根据dp[i - 2]和dp[i - 1]推导出来的,那么我们可以知道遍历顺序一定是从前往后遍历的

5、最后就是我们需要推导出dp数组

小尼接下来拉一下这道题的解题的代码:

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

小尼简单的分析说明一下上面的代码,其实就是像小尼上面所说的一样,我们先初始化我们的dp数组,然后我们在去对我们的dp数组进行对应的一个遍历,其实这个遍历的顺序和条件还是比较简单的,最后我们是需要返回我们的目标值即可。

希望上面的分析和代码可以帮助到小伙伴们~~~

My Eighty-first Page - 打家劫舍 - By Nicolas相关推荐

  1. My Hundredth Page - 回文子串 - By Nicolas

    这篇page是针对leetcode上的647.回文子串所写的.小尼先简单的说明一下这道题的意思,就是给定一个字符串s,需要统计出这个字符串中回文子串的数目,回文子串的定义就是正着读和倒过来读是一样的字 ...

  2. My Seventh Page - 设计链表 - By Nicolas

    这一篇page对应的是leetcode上面707.设计链表这个题目,首先这个题目的描述还是比较简单的,就是我们可以选择使用单链表或者双链表实现链表对应的增删改查的许多功能.小尼这个题目大部分都是看的题 ...

  3. My Eighty-sixth Page - 买股票的最佳时机Ⅲ - By Nicolas

    这篇page是针对leetcode上的123.买股票的最佳时机Ⅲ所写的.小尼先简单的说明一下这道题的意思,就是我们给定一个数组,它的第i个元素表示的是一支股票在第i天的价格,我们需要设计一个算法表示我 ...

  4. My Eighty-seventh Page - 买卖股票的最佳时机 - By Nicolas

    这篇page是针对leetcode上的188.买卖股票的最佳时机Ⅳ所写的.小尼先简单的说明一下这道题的意思,就是我们给定一个整数数组prices,它的第i个元素prices[i]是一支给的股票在第i天 ...

  5. My Fourteenth Page - 两个数组的交集 - By Nicolas

    今天的这篇page针对的时leetcode上的349.两个数组的交集写的,小尼首先简单说明一下这道题的要求,给点两个数组nums1和nums2.,返回他们的交集,输出结果中的每个元素一定是唯一的. 首 ...

  6. My Twenty-Fourth - Page - 逆波兰表达式求值 - By Nicolas

    这篇page是针对leetcode上的150.逆波兰表达式这道题所写的,小尼先简单说明一下这道题的意思,这道题先是介绍了有效的运算符包括"+","-",&quo ...

  7. My Twenty-Eighth Page - 滑动窗口最大值 - By Nicolas

    这篇page是针对leetcode上的239.滑动窗口的最大值所写的.小尼先简单的说明一下这道题的题意,给出一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧,需要返回滑动 ...

  8. My Twentieth Page - 用栈实现队列 - By Nicolas

    这篇page是针对leetcode上的232.用栈实现队列这道题所写的,小尼先简单的说明一下这道题,就是利用两个栈实现先入先出队列.队列应当支持一般队列支持的所有操作(push.pop.peek.em ...

  9. My Ninetieth Page - 最长递增子序列 - By Nicolas

    这篇page是针对leetcode上的300.最长递增子序列所写的.小尼先简单的说明一下这道题的意思,给定一个整数数组nums,我们需要找到其中最长严格递增子序列的长度.其中子序列是由数组派生而来的序 ...

  10. My Eighty-ninth Page - 买卖股票的最佳时机含手续费 - By Nicolas

    这篇page是针对leetcode上的714.买卖股票的最佳时机含手续费所写的.小尼先简单的说明一下这道题的意思,就是给定一个整数数组prices,其中prices[i]表示第i天的股票价格,整数fe ...

最新文章

  1. 爬虫笔记|r.text-r.request.headers|修改,头
  2. 扑克牌图片一张一张_Python 制作一副扑克牌,有趣的案例
  3. Ubuntu 14.04 安装 Sublime Text 3
  4. 深入理解傅立叶变换(详细)
  5. mysql数据库通过二进制 -【恢复数据记录】
  6. vuex+element 从后台获取数据写导航栏-菜单权限
  7. rtsp转rtmp服务linux,ubuntu安装流媒体服务器(nginx+rtmp,rtsp转rtmp,rtsp转m3u8)
  8. ios html5 自动全屏播放,禁止iPhone Safari video标签视频自动全屏的办法
  9. springboot报错Table 'wechat.hibernate_sequence' doesn't exist
  10. 基于SSM的作业管理(在线学习)系统
  11. 【渝粤教育】电大中专计算机使用基础_1作业 题库
  12. SVN 分支合并到主干
  13. 查看页面密码框明文密码
  14. 如何将工作流程“简单化”,从而提高工作效率?
  15. c语言编写方波信号的思路,频率可调的方波信号发生器设计及电路
  16. Flutter 蓝牙便携打印插件
  17. Hotel booking -探索性数据分析(EDA)一(seaborn matplot pyecharts)
  18. 2.开关电源中常见的控制算法
  19. Percona-toolkit工具详解
  20. KVS SDK Alignment trap debug

热门文章

  1. 世预赛:12强赛首战国足0-3不敌澳大利亚,下一场面对日本队国足会如何调整?
  2. 汽车冬季养护的四个重点
  3. 【图像处理】自动报靶系统(重弹孔)【含GUI Matlab源码 973期】
  4. STM32F103C8T6 USART2 配置
  5. 平面曲线的弧长和曲率
  6. 如何对计算机的系统文件和设置进行更改,Windows 系统常用设置方法与技巧
  7. ERD Online 4.0.0新版本震撼来袭,超强国产免费在线数据建模系统
  8. centos7(命令行版)安装teamviewer记录
  9. 图书里的音频二维码如何实现呢?
  10. 计算机任务管理器中的进程,Win7任务管理器中哪些进程可以关闭?