//需要考虑两种情况,有头无尾或者有尾无头,取两者中的较大值
var rob = function(nums) {
let len=nums.length
if(len===0)return 0
if(len===1)return nums[0]
const dd=function(start,end){
//如果数组只有两个值的情况
if(start===end)return nums[start]
//初始化
const dp=Array(nums.length).fill(0)
dp[start]=nums[start]
dp[start+1]=Math.max(nums[start],nums[start+1])
//遍历
for(let i=start+2;i<=end;i++){
dp[i]=Math.max(dp[i-1],dp[i-2]+nums[i])
}
return dp[end]
}
const result1=dd(0,len-2)
const result2=dd(1,len-1)
return Math.max(result1,result2)
};
11-17
12-25