文章目录

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

题目描述

  • 好家伙,真是一道不符合社会主义价值观的题目
  • 不过我们还是要把这道题做了,而且还得用上动态规划

思路 & 代码

  • 首先,不能打劫相邻
  • 然后,房屋都是非负整数(讲道理,之后不会出个带负数的版本把。。老恶心人了)
  • 开始做吧,用dp直接冲:
  1. 因为dp需要初始化前三个数,因此把这三个数作为特殊情况先判断
  2. 然后,考虑到第n个值,肯定在第n-2和第n-3个值之间取:第n-1不能取,第n-4还不如直接取n-2,以此类推。
  3. 更多信息见注释
class Solution {public int rob(int[] nums) {int len = nums.length;// 三种特殊情况if(len == 0){return 0;}if(len == 1){return nums[0];}if(len == 2){return Math.max(nums[1],nums[0]);}// dp[i]:以偷nums[i]结尾的情况,能得到的最大钱数int[] dp = new int[len];// dp的初始化,这三个值是固定的。dp[0] = nums[0];dp[1] = nums[1];dp[2] = nums[0] + nums[2];for(int i=3;i<len;i++){// 中间隔着一个 nums[i-1],防报警就在这里实现dp[i] = Math.max(dp[i-2],dp[i-3]) + nums[i];}// 最大值要么是倒数第一家,要么是倒数第二家return Math.max(dp[len-1],dp[len-2]);}
}

更新版

  • 我以前咋写代码这么乱。。
class Solution {public int rob(int[] nums) {if(nums.length == 1) {return nums[0];}int[] dp = new int[nums.length];dp[0] = nums[0];dp[1] = Math.max(nums[1], nums[0]);for(int i = 2; i < nums.length; i++) {dp[i] = Math.max(dp[i - 2] + nums[i], dp[i - 1]);}return dp[nums.length - 1];}
}

【LeetCode笔记】198. 打家劫舍(Java、动态规划)相关推荐

  1. 198. 打家劫舍 golang 动态规划 数组越界

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

  2. 【LeetCode】198.打家劫舍

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

  3. [周赛][Leetcode][第5457题][JAVA][动态规划][和为奇数的子数组数目]

    [问题描述]5457. 和为奇数的子数组数目[中等] [解答思路] 1. 动态规划 第 1 步:设计状态 dp[i][0] 记录以arr[i]结尾的和为奇数数量 dp[i][1] 记录以arr[i]结 ...

  4. leetcode系列-198.打家劫舍

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

  5. leetcode - 198. 打家劫舍

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

  6. 动态规划——斐波那契数列(70. 爬楼梯、198. 打家劫舍、213. 打家劫舍II、信件错排、母牛生产)

    递归和动态规划都是将原问题拆分成多个子问题然后求解,但是动态规划存储了子问题的解,不需要重复计算. 动态规划(Dynamic Programming,DP)需要转移方程和边界条件. 目录 一.70. ...

  7. 模拟卷Leetcode【普通】198. 打家劫舍

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

  8. leetcode 198打家劫舍

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

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

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

  10. LeetCode:198:打家劫舍

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

最新文章

  1. 有无符号的整数、二进制
  2. eclipse安装软件时长时间停留在calculating requirements and dependencies 的解决方案
  3. python替换img的路径为新的路径_以“五智”为核心 南宁电信打造5G时代数字家庭新路径...
  4. Jupyter Notebook——夏侯南溪常用的快捷键
  5. 通过Stratus 服务器在Flash Player中使用RTMFP 开发P2P应用
  6. \n \r \r\n
  7. 单片机编程软件很简单(六),V5.29 keil mdk单片机编程软件新特性+烧写程序
  8. oneno浏览器插件_Send to OneNote 1.2.13
  9. c++实习岗面试经历
  10. 测试图片色域软件,显示器色域检测图
  11. 计算机网络中WLAN是指,什么是WLAN网络 WLAN是什么意思
  12. VS加载DLL报---找不到指定的模块(126)
  13. kali之beef的使用
  14. 强化学习、行为心理学和成瘾机制
  15. AUTOSAR OS和OSEK OS
  16. org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing
  17. 【JS】对象数组去重+查重+合并同类项
  18. win10远程桌面连接报错(出现身份验证错误。要求的函数不受支持。CredSSP 加密数据库修正)解决办法
  19. 记一次windows 2008 R2 SP1中永恒之蓝病毒的处理过程
  20. HDHCMS模板建立与栏目绑定的方法

热门文章

  1. java 网页正文抽取算法_网页正文抽取算法 ContentExtractor
  2. 央视曝光紫砂锅名单_大家看今天中午《每周质量报告》没,美的牌 紫砂锅含有剧毒。家里有这牌子...
  3. 光华科技光刻胶_光刻胶领衔国产替代,20只相关优质个股曝光,快看看有没有你的...
  4. 计算虚拟化涉及的关键技术有哪几项_都开始商用了 5G的这些关键技术还不知道?...
  5. OpenCV与图像处理学习六——图像形态学操作:腐蚀、膨胀、开、闭运算、形态学梯度、顶帽和黑帽
  6. nginx+uWSGI + django部署项目
  7. 检测系列--RCNN系列
  8. Singleton 和 Monostate 模式
  9. Java消息服务思维导图笔记
  10. linux 第三章红帽子,红帽子 Linux_命令全解