这篇page是针对leetcode上的213.打家劫舍Ⅱ所写的。小尼先简单的说明一下这道题的意思,就是我们还是以小偷的身份去进行偷窃,我们这一次我们给出的房间的第一间和最后一间是连在一起构成一个环形的结构,同样我们每一个房间里面都有对应的金额可以进行对应的偷取,我们需要求的就是我们在不报警的条件下求出我们可以偷窃的最大的金额(其中触发报警的条件跟打家劫舍一样,就是我们如果晚上偷窃了连续的两个房间,就会触发报警)

小尼先简单的分析一下这道题的思路,其实这都题的思路还是比较简单的,其实我们可以细细的分析,我们为了避免环结构对我们的困扰,我们分成了三种情况,第一种就是我们只考虑不包含首尾元素的情况;第二种就是我们考虑包含首元素,不包含尾部元素的情况;第三种就是我们考虑包含尾元素,不包含首元素的情况。我们分析了之后也可以知道,我们的第一种情况其实就是包含了我们的第二种第三种情况/

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

class Solution {public int rob(int[] nums) {if (nums == null || nums.length == 0)return 0;int len = nums.length;if (len == 1)return nums[0];return Math.max(robAction(nums, 0, len - 1), robAction(nums, 1, len));}int robAction(int[] nums, int start, int end) {int x = 0, y = 0, z = 0;for (int i = start; i < end; i++) {y = z;z = Math.max(y, x + nums[i]);x = y;}return z;}
}

其实这道题的解法也是有巧妙之处,我们先排除了特殊的情况,然后我们在开始做了判断,我们求出了两种情况下的二值再取两者中的最大值,我们在取值的for循环中,其中有一点运用的非常巧妙,我们这里定义了x,y,z三个值,这三个值小尼一一跟大家说明一下它们的作用以及记录的是哪些值,x永远记录的都是最前面的值,我们的i在不断往后遍历取nums[i]的时候,我们的x都是与i取到的nums[i]相隔一个位置的距离,这样我们的x+nums[i]才可以表示我们偷取了之后的值,然后y记录的一直都是x之后,nums[i]之前的那个值,我们在其中z表示最后的结果,比较的就是其中y与x+nums[i]的值

My Eighty-second 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. Web版的Tabcontrol控件的制作过程
  2. scrum立会报告+燃尽图(第三周第七次)
  3. 通过Excel访问Kylin
  4. 《Python Cookbook 3rd》笔记(3.7):无穷大与 NaN
  5. 草稿selenium显示等待
  6. php页面设定语言,php实现获取及设置用户访问页面语言类,php页面_PHP教程
  7. postgresql 的 .pgpass密码文件的使用
  8. java网络学习之 ssh 协议学习总结
  9. Keras中那些学习率衰减策略
  10. 服务器是Windows Server 2003 出现svchost.exe错误对话框的问题解决
  11. [JZOJ6042]【NOI2019五校联考2019.3.5】Second【SA】【分治】
  12. 如何在windows上下载安装zeplin
  13. 【Java】注解入门
  14. php7 开发框架,Lin是一套基于php7.2的全新web框架
  15. 清华大学计算机专业考研参考书目
  16. 那些年我们踩过的Hive坑
  17. Docker容器支持中文并添加中文字体
  18. 2018:5G标准关键年
  19. java 风的角度转风向
  20. android 刻度,Android 绘制刻度表盘

热门文章

  1. LCD养生之道 液晶显示器清洁保养技巧
  2. Pytorch求向量的L1范数或L2范数
  3. 西游记不单单讲的是故事(1) ------ 摘自 吴闲云的《煮酒探西游》
  4. 英语口语收集(二十五)
  5. Domain Adaptation and Graph Neural Networks
  6. 从k-line到决策实践:huobi api实现(一)
  7. win7虚拟机iOS坑爹法语键盘冲突解决方法
  8. 酷开系统AI智能让生活更简单化
  9. Ubuntu 12.10下用Pidgin(pidgin-lwqq)登录QQ
  10. VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard