leetcode House Robber
阿新 • • 發佈:2018-12-06
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]; }