House Robber

作为一个抢劫犯,你需要入侵一条街上的房子。房子中的财产以给定的数组表示。不能入侵相邻的两座房子,否则会引发警报。计算可以获取的财产总额的最大值。

算法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Solution {
public int rob(int[] nums) {
int preNo = 0; //偷了之前的房子
int preYes = 0; //没偷之前的房子
for(int i=0;i<nums.length;i++) {
int value = nums[i];
int tmp = preNo + value; //rob
//比较之前没偷和之前偷了的两种结果,决定当前不偷的最大金额
preNo = preNo > preYes ? preNo : preYes;
preYes = tmp;
}
return preNo > preYes ? preNo : preYes;
}
}