作为一个抢劫犯,你需要入侵一条街上的房子。房子中的财产以给定的数组表示。不能入侵相邻的两座房子,否则会引发警报。计算可以获取的财产总额的最大值。
算法如下:1234567891011121314public 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; }}