
思路
啊啊啊我一开始思路是对的!!就是分情况讨论,选了头就不选尾,选了尾巴就不选头。。但我没想到抽象!以为要写两遍就傻不愣登 去把 头和尾判断大小然后设0了。我晕= =
重复代码抽象出来呀
var rob = function(nums) {if(nums.length===0) return 0if(nums.length===1) return nums[0]const result1 =robRange(nums,0,nums.length-1)const result2 =robRange(nums,1,nums.length)return Math.max(result1,result2)};const robRange =function(nums,start,end){if(start===end) return nums[start]let dp =new Array(end).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-2]+nums[i],dp[i-1])}return dp[end-1]}
