1. 程式人生 > >leetcode House Robber

leetcode House Robber

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];
	}