做完打家劫舍后我发现自己动态规划方面处理问题的能力,终于迎来了开篇,虽然打家劫舍是在我看网上的别的人做的,然后自己理解的,但是我知道我再遇到这类题不会再手足无措了,隔了两天再来挑战,我看看自己的动态规划能力是否有那么一点点,于是做了打家劫舍||,虽然我做了将近2个小时,但是庆幸的是自己依靠自己的能力做了出来,很感动,自己花了一晚上的时间做出来了,我都被自己感动的哭了,我算法如此垃圾,竟然能完全依靠自己的能力做出这个算法,真的很让我相信:天才是少数的,大多数人喜欢给自己的懒,找借口。好了不说,

说思路吧:

1.不让它收尾都取,只让它取其一,首端取了,尾端就不取,尾端取了首端就不取,然后在打家劫舍的基础上多声明一个数组,这个数组的取值是从原数组的尾端开始取值的,其实算法和打家劫舍一样,只不过我把打家劫舍的算法用了两遍,

2.上代码吧

public int rob(int[] nums) {

if (nums.length == 0) {

return 0;

}

if (nums.length == 1) {

return nums[0];

}

int max = Math.max(nums[0],nums[1]);

if (nums.length == 2) {

return max;

}

int[] f = new int[nums.length];

int[] n = new int[nums.length];

f[0] = nums[0];

f[1] = max;

n[nums.length-1] = nums[nums.length-1];

n[nums.length-2] = Math.max(nums[nums.length-1],nums[nums.length-2]);

for (int i = 2; i

f[i] = Math.max(f[i - 2] + nums[i], f[i - 1]);

}

for (int i = nums.length-3; i > 0; i--) {

n[i] = Math.max(n[i+2] + nums[i], n[i+1]);

}

if (f[nums.length-2] >= n[1]){

return f[nums.length-2];

}

return n[1];

}

house robber java_java之 ------------[LeetCode] House Robber 打家劫舍||相关推荐

  1. 【Leetcode】213. 打家劫舍II(House Robber II)

    Leetcode - 213 House Robber II (Medium) 题目描述:一个小偷沿着一条环形的街偷窃,给定数组表示每家屋子的金额,如果偷窃连续的两间屋子就会触发警报,求在不触发警报的 ...

  2. LeetCode:House Robber

    问题描述: You are a professional robber planning to rob houses along a street. Each house has a certain ...

  3. LeetCode House Robber III(动态规划)

    问题:给出一个树,只能隔一层取值,求最大值. 思路:方法一用dp(node)从当前结点开始可以取的最大值.当取node的值时,dp(node)=node.val + dp(node.left.left ...

  4. LeetCode House Robber II(动态规划)

    问题:给出一个数组,表示房屋内藏有的现金.房屋围成一圈.相邻房间装有防盗系统,如果相邻的房间在同一晚上被偷,系统会自动报警.要求在不触到警报的情况下,能够偷到的最高金额. 思路:因为房屋围成一圈,并且 ...

  5. LeetCode House Robber 家庭劫犯(dp)

    题意:有一个整数序列,从中挑出一些数字,使得总和是最大,前提是,相邻的两个数字中只能挑其一.比如1 2 3 就只能挑2或者1和3. 思路:很直观的题,dp思想.降低规模,从小规模开始考虑.如果只有两个 ...

  6. 【LeetCode】198.打家劫舍

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

  7. 20190907:(leetcode习题)打家劫舍

    打家劫舍 题目 大致思路 代码实现 题目 大致思路 递归思路:从第一个开始偷,第n个房子处偷得的最大的总钱数要么是第n-1个房子处偷得的总钱数,要么是第n-2个房子处偷的总钱数+当前房子存放的钱数. ...

  8. 图像信息隐藏算法JAVA_Java实现 LeetCode 831 隐藏个人信息(暴力)

    831. 隐藏个人信息 给你一条个人信息字符串 S,它可能是一个 邮箱地址 ,也可能是一串 电话号码 . 我们将隐藏它的隐私信息,通过如下规则: 电子邮箱 定义名称 name 是长度大于等于 2 (l ...

  9. 插入排序 链表 java_Java实现 LeetCode 147 对链表进行插入排序

    147. 对链表进行插入排序 对链表进行插入排序. 插入排序的动画演示如上.从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示). 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将 ...

最新文章

  1. Laravel核心代码学习 -- Facades
  2. 使用yum查看安装了哪些软件包、某软件包是否已经安装
  3. 链表!比数组更适合做增删操作的数据结构
  4. avframe转byte数组_C# amp; VB6.0 图像与二维数组 互转
  5. c# 命名空间命名规范_C#命名空间能力问题和解答 套装2
  6. 自己做的一个小demo
  7. Android内存优化(二):一分钟发现内存泄漏
  8. Java 多态的实现机制
  9. ic卡消费管理系统_详述食堂消费系统的功能特点
  10. 分享前几年的外包经历,给正在犹豫要不要去外包的学弟学妹做参考.
  11. cad计算机功能键,【答疑】Auto CAD2014计算器快捷键是什么呢?? - 视频教程线上学...
  12. BT种子文件以及磁力文件 解析
  13. Excel数据分析案例二——预测销售额
  14. 简单聊聊OpenWrt的UPnP协议
  15. DDD中的“领域模型”
  16. 下划线与连字符(中划线)
  17. 如何判断和删除Orphaned site collections?
  18. 13 分钟速览 WWDC22
  19. 安卓开发——android8.0应用崩溃,报错: Only fullscreen opaque activities can request orientation
  20. android震动代码分析

热门文章

  1. Hibernate智能化分页
  2. python:ElementTree操作XML
  3. Windows Server 2008 R2 如何启动内核调试
  4. spring-mvc注解
  5. Linux-Load Average解析
  6. Logstash输出日志到elasticsearch
  7. Swift - 给图片添加文字水印(图片上写文字,并可设置位置和样式)
  8. Android ActionBar完全解析,使用官方推荐的最佳导航栏(下) .
  9. struts2点滴记录
  10. 虚拟机win2003安装mysql教程_CentOS7.2虚拟机上安装MySQL 5.6.32的教程