LintCode 392 House Robber

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LintCode 392 House Robber相关的知识,希望对你有一定的参考价值。

// Ref: https://segmentfault.com/a/1190000003811581
// Ref: http://www.cnblogs.com/grandyang/p/4383632.html

/*
如果选择了抢劫上一个屋子,那么就不能抢劫当前的屋子,所以最大收益就是抢劫上一个屋子的收益
如果选择抢劫当前屋子,就不能抢劫上一个屋子,所以最大收益是到上一个屋子的上一个屋子为止的最大收益,加上当前屋子里有的钱
*/

 1 public static long houseRobber(int[] A) {
 2         int len = A.length;
 3         if (len <= 1) {
 4             return len == 0 ? 0: A[0];
 5         }
 6 
 7         long previous = A[0]; // a is the previous max
 8         long current = Math.max(A[0], A[1]); // b is the current max
 9         for(int i = 2; i < len; i++){
10             long tmp = current;
11             // previous + A[i] => pre-pre + current
12             // b/c it cannot rob adjacent houses => need to compare
13             current = Math.max(previous + A[i], current);
14             previous = tmp;
15         }
16         return current;
17     }

 

以上是关于LintCode 392 House Robber的主要内容,如果未能解决你的问题,请参考以下文章

213. House Robber II

LeetCode中 House Robber问题随笔

337_House Robber III

LeetCode House Robber III

动态规划 - 213. House Robber II

LeetCode 213. House Robber II