House Robber 题目:https://leetcode.com/problems/house-robber/
解题思路:抢劫不可以同时抢劫相邻的,
当前抢劫的最大值=当前房屋的值+上上个的最大值 与 上个最大值的 最大值
动态规划:
arr[0]=nums[0]
arr[1]=Math.max(nums[0],nums[1])
arr[i]=Math.max(arr[i-2]+nums[i],arr[i-1]) i>2
public static void main(String[] args) {
int[] arr={2,7,9,3,1};
int rob = rob(arr);
System.out.println(rob);
}
/**
* 房屋抢劫
* @param nums
* @return
*/
public static int rob(int[] nums) {
int[] arr=new int[nums.length];
if(nums==null || nums.length==0){
return 0;
}
arr[0]=nums[0];
if(nums.length==1){
return arr[0];
}
arr[1]=Math.max(nums[0],nums[1]);
for(int i=2;i<nums.length;i++){
arr[i]=Math.max(arr[i-1],arr[i-2]+nums[i]);
}
return arr[nums.length-1];
}