392.House Robber-打劫房屋(中等题)
来源:互联网 发布:诺基亚5233软件下载 编辑:程序博客网 时间:2024/05/23 19:21
打劫房屋
题目
假设你是一个专业的窃贼,准备沿着一条街打劫房屋。每个房子都存放着特定金额的钱。你面临的唯一约束条件是:相邻的房子装着相互联系的防盗系统,且 当相邻的两个房子同一天被打劫时,该系统会自动报警。
给定一个非负整数列表,表示每个房子中存放的钱, 算一算,如果今晚去打劫,你最多可以得到多少钱 在不触动报警装置的情况下。
样例
给定 [3, 8, 4], 返回 8.
挑战
O(n) 时间复杂度 且 O(1) 存储。
题解
动态规划,就是选择从第1个房间还是第2个房间开始,定义一个长度为2的数组保存变量。第i个房屋是否打劫要看res[(i-1)%2]和res[(i-2)%2]+ A[i]谁更大。
public class Solution { /** * @param A: An array of non-negative integers. * return: The maximum amount of money you can rob tonight */ public long houseRobber(int[] A) { int n = A.length; long []res = new long[2]; if(n==0) { return 0; } if(n >= 1) { res[0] = A[0]; } if(n >= 2) { res[1] = Math.max(A[0], A[1]); } if(n > 2) { for(int i = 2; i < n; i++) { res[i%2] = Math.max(res[(i-1)%2], res[(i-2)%2]+ A[i]); } } return res[(n-1)%2]; }}
Last Update 2016.11.13
0 0
- 392.House Robber-打劫房屋(中等题)
- 535.House Robber III-打劫房屋 III(中等题)
- *[Lintcode]House Robber 打劫房屋
- 515.Paint House-房屋染色(中等题)
- 198. House Robber (房屋盗窃)
- **[Lintcode] House Rober III 打劫房屋 III
- 打劫房屋
- 打劫房屋
- 打劫房屋
- LintCode(M)打劫房屋(动态规划)
- LintCode打劫房屋3(M)
- 打劫房屋 II和打劫房屋 III
- Uber面试题1 | 房屋窃贼 House Robber II
- House Robber抢劫房屋利益最大化算法详解
- LintCode-打劫房屋
- lintcode-打劫房屋
- 题目:打劫房屋
- LintCode-打劫房屋
- tips:js没有块级作用域。
- Android UI开发第二十六篇——Fragment间的通信
- 二阶魔方还原教程
- 对话框弹出(Bootstrap)
- 利用Python爬虫获取IP2Location定位数据
- 392.House Robber-打劫房屋(中等题)
- C++虚函数和虚继承浅析
- Fragment之间的通信
- 进入第二章的书本了接下来就是单独的介绍各个具体属性了第一个是场景
- 理解Hibernate的Session和缓存机制
- Spark快速开始
- 瀑布式开发、迭代开发、敏捷开发、XP与SCRUM的区别
- ftime函数的使用
- Oracle笔记