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

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

示例 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 。

思路:dp[i]代表前i家相同问题的最优解。对于第i家,有两种可能:

1)不偷,这时的最优解就是dp[i-1]

2)偷,这时的最优解就是这一家的价值nums[i]加上隔了一家的最优解dp[i-2]

注意:细节

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

leetcode198 打家劫舍相关推荐

  1. 37预备2—leetcode198打家劫舍

    如果你是一个强盗,正准备抢劫一条街道,这条街道上装有互联监视系统,也就是如果连续抢劫两家相邻的商店就会引发报警.你如何从这条街道盗取最大收益.给定一列整数表示 每家商店的价值,在不能取相邻两数的情况下 ...

  2. LeetCode-198. 打家劫舍

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

  3. Leetcode--198. 打家劫舍

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

  4. Leetcode_打家劫舍三道题(动态规划总结)

    Leetcode_打家劫舍三道题(动态规划总结) 分类专栏: Leetcode # 动态规划 文章标签: 动态规划 leetcode 算法 LeetCode198 打家劫舍 leetCode213 打 ...

  5. 【大总结3】leetcode解题总览(算法、剑指offer、SQL、多线程、shell)

    3/22更新 剑指offer 题目链接 建议大部分题都会做,都能比较快速且准确的写出来.关于做题方式,我的建议是:一道一道刷即可,因为难度一般,不用系统的学习什么知识,遇到实在不会的就跳过即可. 我这 ...

  6. 动态规划LeetCode70爬楼梯

    题目描述: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 方法一: 1 class Solut ...

  7. LeetCode算法题整理(200题左右)

    目录 前言 一.树(17) 1.1.后序遍历 1.2.层次遍历 1.3.中序 1.4.前序 二.回溯(20) 2.1.普通回溯 2.2.线性回溯:组合.排列.子集.分割 2.3.矩阵回溯 三.二分查找 ...

  8. leetcode解题总览

    3/22更新 剑指offer 题目链接 建议大部分题都会做,都能比较快速且准确的写出来.关于做题方式,我的建议是:一道一道刷即可,因为难度一般,不用系统的学习什么知识,遇到实在不会的就跳过即可. 我这 ...

  9. 【代码随想录】-动态规划专题

    文章目录 理论基础 斐波拉契数列 爬楼梯 使用最小花费爬楼梯 不同路径 不同路径 II 整数拆分 不同的二叉搜索树 背包问题--理论基础 01背包 二维dp数组01背包 一维数组(滚动数组) 装满背包 ...

最新文章

  1. 封装php连接数据库返回方法
  2. Recovering unassigned shards on elasticsearch 2.x——副本shard可以设置replica为0在设置回来...
  3. java web 监控cpu、内存等。hyperic-sigar
  4. [官网]Prevent a worm by updating Remote Desktop Services (CVE-2019-0708)
  5. linux内核对伙伴系统的改进--migrate_type
  6. 解决yum命令失效,vim: command not found
  7. Anaconda中下载速度贼慢?
  8. MySQL之数据库对象查看工具mysqlshow
  9. arm qt mysql插件_Ubuntu下编译ARM平台Qt的MySQL插件
  10. idea ssm框架 mysql_IDEA 2017 整合SSM框架(使用Maven创建工程)
  11. BizTalk开发系列(二十二) 开发自定义Map Functoid
  12. 【安卓大作业】Android Studio开发项目图书管理系统“书香驿站”
  13. STM32毕业设计项目
  14. 心形代码来了,Java表白大师
  15. android时光轴相册,Android之RecyclerView实现时光轴效果示例
  16. Delphi xe7组件和控件的安装方法
  17. iphone live photo没有声音
  18. 微信朋友圈卖葡萄经验分享
  19. Excel如何将文本中间的数值提取出来
  20. netfilter连接跟踪(conntrack)详述

热门文章

  1. java 圆形按钮,如何在Java中创建圆形的JButton?
  2. rt5350 中断处理分析
  3. 实例解析linux内核I2C体系结构(1)
  4. Makefile.am
  5. python复制文件的代码_python 复制文件流程
  6. 软件oem要注意什么_做化妆品oem,选择化妆品包材要注意什么问题
  7. 【转】【MySQL】运行原理(四):重做日志(redo log),回滚日志(undo log),二进制日志(binlog)
  8. Magento微信支付接口开发小记
  9. SharePoint学习札记[3] — Office SharePoint Server 2007部署
  10. ASP.NET MVC 入门6、TempData