public class Solution {
/**
* @param nums: An array of non-negative integers.
* return: The maximum amount of money you can rob tonight
*/
public int houseRobber2(int[] nums) {
// write your code here
if(nums.length==0)
return 0;
if(nums.length==1)
return nums[0];
if(nums.length==2)
return Math.max(nums[0], nums[1]);
if(nums.length==3){
return Math.max(nums[0], Math.max(nums[1], nums[2]));
}
int []dp1=new int[nums.length-1];
for(int i=0;i
if(i==0){
dp1[i]=nums[i];
}else if(i==1){
dp1[i]=Math.max(nums[0], nums[1]);
}else if(i==2){
dp1[i]=Math.max(nums[0]+nums[i], nums[1]);
}else{
dp1[i]=Math.max(dp1[i-2], dp1[i-3])+nums[i];
}
}
int []dp2=new int[nums.length-1];
for(int i=1;i
if(i==1){
dp2[i-1]=nums[i];
}else if(i==2){
dp2[i-1]=Math.max(nums[i-1], nums[i]);
}else if(i==3){
dp2[i-1]=Math.max(nums[1]+nums[i], nums[2]);
}else{
dp2[i-1]=Math.max(dp2[i-3], dp2[i-4])+nums[i];
}
}
return Math.max(Math.max(dp1[dp1.length-1], dp1[dp1.length-2]),Math.max(dp2[dp2.length-1], dp2[dp2.length-2]));
}
}
本文由【waitig】发表在等英博客 本文固定链接:Java实现-打劫房屋2 欢迎关注本站官方公众号,每日都有干货分享!
点赞 (0)赏分享 (0)