题198:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统, 如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警
推荐阅读:https://zhuanlan.zhihu.com/p/49427827
1 /* 2 * 题198:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统, 3 * 如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 4 * 示例: 5 * 输入: [1,2,3,1] 6 输出: 4 7 解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 8 偷窃到的最高金额 = 1 + 3 = 4 9 */ 10 public class Rob { 11 public int rob(int[] arr) { 12 if(arr.length == 0) { 13 return 0; 14 } 15 if(arr.length == 1) { 16 return arr[0]; 17 } 18 int len = arr.length; 19 int[] money = new int[len]; 20 money[0] = arr[0]; 21 money[1] = Math.max(arr[0], arr[1]); 22 for(int i=2; i<len; i++) { 23 money[i] = Math.max(money[i-1], money[i-2] + arr[i]); 24 } 25 return money[len-1]; 26 } 27 }