你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。

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

示例 1:

输入: [2,3,2]
输出: 3
解释: 你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。
示例 2:

输入: [1,2,3,1]
输出: 4
解释: 你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。
     偷窃到的最高金额 = 1 + 3 = 4 。

思路:和打家劫舍思路相同,只是首尾相连。

这时我们不算第一家求一次,不算最后一家求一次即可。

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

leetcode213 打家劫舍II相关推荐

  1. leetcode213. 打家劫舍 II

    一:题目 二:上码 class Solution {public:/**思路:1.既然成环了,我们如果选取得一条偷取路径是从头开始得那么我们就不能偷取最后一个,那就不算最后一个偷取一遍2.同理我们也可 ...

  2. 2022-3-2 Leetcode213. 打家劫舍 II

    我的想法是 分成两种情况,第一种情况不要第一个,第二种情况不要第二个. 但是我犹豫了,我犹豫的原因是,如果不要第一个,只用剩下的可能也用不到最后一个. 但是我这个犹豫是毫无依据的.排开第一个之外,剩下 ...

  3. LeetCode-动态规划-213. 打家劫舍 II

    213. 打家劫舍 II 思路:考虑三种情况注释代码中 class Solution {public:int rob(vector<int>& nums) {if(nums.emp ...

  4. LeetCode—213. 打家劫舍 II

    213. 打家劫舍 II 题目描述:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装有相 ...

  5. 213. 打家劫舍 II golang 动态规划

    题目 213. 打家劫舍 II 198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相 ...

  6. leetcode - 213. 打家劫舍 II

    解题思路:这道题是"打家劫舍I"的升级版,和"打家劫舍I"的区别在于"打家劫舍II"的第一个房子和最后一个房子是相连的,这就导致不能用&qu ...

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

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

  8. 代码随想录Day48|198.打家劫舍、213.打家劫舍II、337.打家劫舍III

    文章目录 198.打0家劫舍 213.打家劫舍II 337.打家劫舍III 198.打0家劫舍 文章讲解:代码随想录 (programmercarl.com) 题目链接:198. 打家劫舍 - 力扣( ...

  9. day40|198.打家劫舍、213.打家劫舍II、337.打家劫舍III

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

最新文章

  1. jquery的$().each,$.each的区别
  2. 【Matlab 图像】边缘检测算法及效果演示
  3. 英特尔将Nervana技术融入产品路线图
  4. JavaScript对象的chapterI
  5. 从提香到戈雅:西班牙普拉多博物馆藏画展
  6. C程序语言表达式运算顺序,详解C++编程中表达式的语义与计算顺序
  7. linux 联合编译,在Linux上编译UEFI SDK 2018/OVMF的方法
  8. 更“优秀”? 必须的!!
  9. android Aidl原理分析
  10. Python数据可视化的例子——折线图(line)
  11. 快速高效入门3D建模学习教程,让你最快从小白到建模大师!
  12. Web前端—01HTML超文本标记语言
  13. 护理和母乳喂养文胸的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  14. 深入理解Linux网路技术内幕学习笔记第四章:通知链
  15. 搞个服务器安装黑群晖系统,牛人闲置电脑大改造!超低成本组建家用黑群晖NAS...
  16. Snowflake Snow Snowflakes(哈希表的应用)
  17. 每日刷题记录 (一)
  18. 2021年网络安全十大发展趋势预测
  19. 【ARM】新唐NUC977移植WK2124驱动
  20. Flutter实战之坑——按返回键回到手机桌面不退出app

热门文章

  1. python两个线程交替打印_三线程按顺序交替打印ABC的四种方法
  2. s3c2440的内存管理机制
  3. wordpress 后台慢_建站经验-wordpress用户注册收不到验证邮件
  4. 【转】为什么不能使用字符流读取非文本的二进制文件?
  5. [你必须知道的.NET] 第五回:深入浅出关键字---把new说透
  6. JVM虚拟机选项:Xms Xmx PermSize MaxPermSize区别
  7. mysql 关联更新_跳出初学MySQL知识的原理整理(一)
  8. volatile学习(可见性,不保证原子性,禁止指令重排(双端检索机制))
  9. Spark内核源码学习(暂未学完)
  10. 【PAT - 甲级1006】Sign In and Sign Out (25分)(STLmap)