主要分析第 i 间房偷还是不偷的关系。
class Solution {public int rob(int[] nums) {if (nums == null || nums.length == 0) return 0;// dp[i] 表示偷// [1,2,3,1]// [1,2,4,4]// [1,2,4,4]// 第 i 家是偷和不偷的关系// 如果偷的话,那么第 i - 1 家是不能偷的// dp[i] = Math.max(dp[i - 2] + nums[i], dp[i - 1])int len = nums.length;int[] dp = new int[len + 1];dp[1] = nums[0];for (int i = 2; i <= len; i++) {dp[i] = Math.max(dp[i - 2] + nums[i - 1], dp[i - 1]);}return dp[len];}private void printArr(int[] arr) {for (int i : arr) {System.out.print(i + " ");}}}
