步骤一、确定状态:

1、确定原问题中变化的变量个数

2、考虑最后一步:

对于第N间房屋,有两个选项: 偷窃第N间房屋,那么就不能偷窃第N−1间房屋,偷窃总金额为前N-2间房屋的最高总金额与第N间房屋的金额之和。 不偷窃第N间房屋,偷窃总金额为前N-1间房屋的最高总金额。

在两个选项中选择偷窃总金额较大的选项,该选项对应的偷窃总金额即为前 N 间房屋能偷窃到的最高总金额。

步骤二、推断状态方程:

用f[i]表示前i间房屋能偷窃到的最高总金额,那么就

有如下的状态转移方程: f[i]=max(f[i-2]+A[i],f[i-1])

前N-1间房屋的最高总金额

前N-2间房屋的最高总金额与第N间房屋的金额之和

步骤三、规定初始条件和边界:

初始条件: f[0]=A[0] 边界情况: f[1]=max(A[0],A[1])

步骤四、计算顺序:

初始化f[0] 计算f[1],f[2]....f[n-1] 答案是f[n-1],n是数组长度

class Solution:def rob(self, nums: List[int]) -> int:if len(nums) == 0:return 0size = len(nums)if len(nums) == 1:return nums[0]# 初始化dp = [0] * (size)# 边界dp[0] = nums[0]dp[1] = max(nums[0], nums[1])# 转移方程for i in range(2, size):dp[i] = max(dp[i-2] + nums[i], dp[i-1])return dp[-1]

102. Leetcode 198. 打家劫舍 (动态规划-打家劫舍)相关推荐

  1. 动态规划——打家劫舍(Leetcode 198)

    题目选自Leetcode 198 打家劫舍 动态规划解法: 详解过程 如果你对动态规划还不够了解,不着急,咱慢慢来~~ 解题代码: class Solution { public:int rob(ve ...

  2. leetcode 198打家劫舍

    leetcode 198打家劫舍 题目链接:打家劫舍 题目描述:你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间 ...

  3. leetcode组队学习——动态规划

    文章目录 主要思想 模板步骤 例题 300. 最长上升子序列 674. 最长连续递增序列 5. 最长回文子串 516. 最长回文子序列 72. 编辑距离 198. 打家劫舍 213. 打家劫舍 II ...

  4. 【leetcode】【动态规划】股票买卖

    leetcode 股票买卖(动态规划) 这位大佬四种题型总结的很好:link 一共只有三种状态:买.卖.冷冻 buy[i]buy[i]buy[i] 表示第i天之前最后一次行为是buy时,最大的收益 s ...

  5. leetcode 198. 打家劫舍(最简单的动态规划问题)

    题目 思路 经典的动态规划问题 第 i 家:偷,或者不偷 -- 从这两种选择中,选择最大值. 1.如果 不偷,则等于 前 i-1 家最大 2.如果 偷,则等于 前 i-2 家最大 + 第 i 家 题解 ...

  6. LeetCode 198. 打家劫舍(动态规划)

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

  7. leetcode - 198. 打家劫舍

    198. 打家劫舍 -------------------------------------- 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房 ...

  8. LeetCode 198. 打家劫舍(DP)

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

  9. 力扣198.打家劫舍---动态规划与滚动数组

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

最新文章

  1. 《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.2. 准备虚拟内核文件系统...
  2. FPGA从Xilinx的7系列学起(7)
  3. ioca0中断 pic单片机_关于PIC单片机的一些经验总结 -单片机-电子工程世界网
  4. 手把手教你代码重构,是时候告别屎一样的代码了!
  5. Java黑皮书课后题第10章:10.2(BMI类)将下面的新构造方法加入BMI类中
  6. mockito模拟依赖注入_Mockito间谍–部分模拟
  7. android图片加水印,文字
  8. 三轴合并_用两套乐高60107合并成铰接式云梯消防车,看看和60112有什么区别
  9. MyBatis集合Spring(三)之mapper
  10. JAVA HttpURLConnection 获取网页内容
  11. Android Fragment切换动画效果
  12. React移动端h5日历组件react-h5-calendar周日历 月日历 周视图 月视图自定义标记点
  13. CITE 2018盛大开幕,精彩看点速来围观
  14. QT 基于Libvlc的视频播放器
  15. cad卸载不干净_还怕软件卸载不干净吗?试试它:Revo Uninstaller Pro
  16. 【软件测试】linux命令-引用符号(反斜杠\、单引号‘‘、双引号““)
  17. 解析机智云MCU源码
  18. 自然语言处理(NLP)任务中常用的分词工具及底层算法支持
  19. java oval_Java对象校验框架Oval怎么使用 | 学步园
  20. 自动驾驶-车辆检测(YOLO算法)

热门文章

  1. 网联靴子将落地,银行将关闭第三方支付直接代扣通道
  2. 【刷算法】两个链表的第一个公共结点
  3. 你还以为,除了你自己就没有人懂你女朋友吗?
  4. Navicat for Oracle实现连接Oracle
  5. 一天一种设计模式之五-----代理模式
  6. android adb启动不了
  7. BLE Mesh(2)—— 基本术语及含义
  8. Leetcode1694. 重新格式化电话号码[C++题解]:字符串模拟题
  9. OpenCV实战中:blender-feed(img_warped_s, mask_warped, corners[img_idx]);这里有异常的处理方法
  10. android仿苹果滑动,Android开发仿IOS的滑动按钮