https://leetcode-cn.com/problems/house-robber-ii/
Idea
此题与第一题类似 将情况拆分成为不选第一号 和不选最后一号房子的两种情况即可
Code
class Solution {public int rob(int[] nums) {int size=nums.length;int[] dp=new int[size];int[] bp=new int[size];if(size==0)return 0;if(size==1)return nums[0];if(size==2)return Math.max(nums[0], nums[1]);if(size==3)return Math.max(nums[0], Math.max(nums[1], nums[2]));//不偷最后一个房子dp[0]=nums[0];dp[1]=Math.max(nums[0], nums[1]);for(int i=2;i<size-1;i++){dp[i]=Math.max(dp[i-2]+nums[i], dp[i-1]);}//不偷第一个房子bp[0]=0;bp[1]=nums[1];for(int i=2;i<size;i++){bp[i]=Math.max(bp[i-2]+nums[i], bp[i-1]);}return Math.max(dp[size-2], bp[size-1]);}}
