题目:

You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have security system connected and it will automatically contact the police if two adjacent houses were broken into on the same night. Given a list of non-negative integers representing the amount of money of each house,determine the maximum amount of money you can rob tonight without alerting the police.

题目大意:

你是一名专业强盗,计划沿着一条街打劫。每间房屋都储存有一定金额的钱,唯一能阻止你打劫的约束条件就是房屋之间有安全系统相连,如果同一个晚上有两间相邻的房屋被闯入,它们就会自动联络警察,因此不可以打劫相邻的房屋。 重点内容给定一列非整,代表每间房屋的金额,算出在不惊动警察的前提下一晚上最多可以打劫到的金钱数。

解题思路:动态规划(Dynamic Programming)

用状态转移方程:sum[i] += Math.max(sum[i-2], sum[i-3]);

第i个位置的最大值由max(sum[i-2], sum[i-3])决定, 把最大值转移给sum[i]

算法源码:

 1 package HouseRobber;
 2 public class Main {
 3     public static void main(String[] args){
 4         int[] sum= {1,9,10,10,7};
 5         System.out.println(robber(sum));
 6     }
 7     public static int robber(int[] sum){
 8         if (sum== null || sum.length == 0) {
 9             return 0;
10         }
11         //如果只有一个元素,返回这个元素值
12         if(sum.length==1){
13             return sum[0];
14         }
15         else if(sum.length==2){
16         //如果有两个元素,返回其中较大的值
17             return Math.max(sum[0], sum[1]);
18         }else if(sum.length==3){
19         //如果有三个元素,比较第一个元素和第三个元素之和与第二个元素的值,返回较大者
20             return Math.max(sum[0]+sum[2], sum[1]);
21         }
22         //把第一个和第三个元素的和赋给第三个元素,以便以后比较
23         if (sum.length > 3) {
24             sum[2] += sum[0];
25         }
26         //从第四个元素开始处理就需要用到公式了,也是从第四个开始重新赋值,元素少于四的时候,公式不成立
27         int i = 3;
28         for(;i<sum.length;i++){
29              sum[i] += Math.max(sum[i-2], sum[i-3]);
30         }
31         //举个例子:如有4个元素,i=3,执行一次循环之后(这个时候i=4):最后一个元素=最后一个元素+前两个中较大的;
32         return Math.max(sum[i-1], sum[i-2]);//再比较最后一个和倒数第二个
33     }
34 }

原文链接:http://blog.csdn.net/promiseyufei/article/details/55657580

转载于:https://www.cnblogs.com/wuyufei/p/6413645.html

LeetCode | HouseCode 算法题相关推荐

  1. 【leetcode】 算法题1 两数之和

    [leetcode] 算法题1 两数之和 问题   给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums ...

  2. leetcode贪心算法题集锦(持续更新中)

    leetcode贪心算法题集锦 leetcode贪心算法题集锦(持续更新中).python 和C++编写. 文章目录 leetcode贪心算法题集锦 一.贪心算法 1.盛最多水的容器 2.买股票的最佳 ...

  3. LeetCode 简单算法题

    使用Nodejs 抓取的LeetCode 简单算法题  一步一步来,先攻破所有简单的题目,有些题目不适合使用JS解决,请自行斟酌 Letcode 简单题汇总 104. Maximum Depth of ...

  4. Leetcode高频算法题——字节跳动篇

    众所周知,字节跳动面试非常喜欢考算法题. Leetcode官方的企业题库不仅付费,而且题量非常大. 因此,我从20年7月开始,手动整理牛客面经涉及的Leetcode算法题,并按照频度由高到低进行了排列 ...

  5. 为了OFFER,花了几个小时,刷下Leetcode链表算法题

    @Author:Runsen @Date:2020/9/13 链表是我这辈子的痛啊,每次学到链表,就往往不会,就没有继续学下去.现在大四不能继续让这个链表阻碍我了.现在基本是重刷数据结构和算法,毕竟笔 ...

  6. 【Leetcode数据结构算法题】合并两个有序数组(顺序表篇)

    题目内容: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2中的元素数目. 请你 合并 nums2 到 nums1 ...

  7. [LeetCode]高频算法题

    建议在准备面试前的1-2周过一遍,这里尽量用简短的几个词,记录每道题的核心解法,帮助记忆 怎么用这个文档: 1)如果你还有1-2个月开始面试,那就跟着这个文档一道一道的写吧,看看里面说的解法是否符合你 ...

  8. 【leetcode】算法题记录(111-120)

    目录 二叉树最小深度 路径总和 路径总和 II 二叉树展开为链表 不同的子序列 填充每个节点的下一个右侧节点指针 填充每个节点的下一个右侧节点指针 II 杨辉三角 杨辉三角 II 三角形最小路径和 二 ...

  9. 打牌博弈 dfs深度优先遍历搜索 排课表 拓扑排序 升序字符串 动态规划 剑指offer编程题整理 leetcode每日算法题

    递归,回溯, 深度优先搜索 题目描述 有一叠扑克牌,每张牌介于1和10之间 有四种出牌方法: 单出1张 出2张对子 出五张顺子,如12345 出三连对子,如112233 给10个数,表示1-10每种牌 ...

最新文章

  1. TensorRT重磅更新!10亿参数大模型实时运行,GPT推理加速21倍
  2. linux操作小技巧
  3. CTFshow 命令执行 web62
  4. php获取总共内存_php获取页面运行使用内存的两个函数
  5. 4.1 基础-放苹果(整数划分)
  6. Tracer Druid 记录sql 以及参数
  7. 再见了 React、Angular,Vue3 才是 yyds
  8. 将字符串和数字合并动态写入
  9. 简述python解释器的作用_什么是python解释器?
  10. 前端学习(3090):vue+element今日头条管理-参数传递
  11. docker-ce安装
  12. Biorhythms(POJ-1006)
  13. 日志分析系统搭建分析与比较
  14. android控件之间的过渡动画效果,Android - 交换控件位置:基于LayoutParams的瞬间交换与基于ObjectAnimator动画效果交换...
  15. chrome 下载东西 失败禁止_如何修复最常见的Google Chrome下载错误
  16. 常用的3款光学仿真软件分析---来源网络
  17. java8中的Stream用法详解
  18. 深圳超美海边烧烤场 深圳户外烧烤攻略
  19. 武汉理工大学计算机学院在哪个区,武汉理工大学研究生院在哪个校区
  20. mac使用zsh终端环境变量配置无效的解决方案

热门文章

  1. 安装 VMware Tools
  2. SqlBulkCopy 批量复制数据到数据表
  3. POJ 1200 Crazy Search(RK)
  4. HTTP 协议知识点总结(一)
  5. 搭建Telnet服务器
  6. 云计算解决方案——电信行业
  7. php 数据类型转换与比较
  8. mlecms v2.2版权
  9. [转帖]关于win7共享的问题和解答
  10. 股票代码前面为0,补齐6位数