HouseRobberII
Published at 2021-10-20
class Solution:
def rob(self, nums: List[int]) -> int:
def doRob(nums):
robs = nums[:2]
for i in range(2, len(nums)):
robs.append(max(robs[max(0, i - 3)], robs[max(0, i - 2)]) + nums[i])
return max(robs)
length = len(nums)
if length < 2: return max(nums)
return max(doRob(nums[0:length - 1]), doRob(nums[1:length])) /**
* @param {number[]} nums
* @return {number}
*/
var rob = function(nums) {
const doRob=(nums)=>{
const robs = nums.slice(0, 1)
for(let i=1; i<2; i++){
robs.push(Math.max(nums[0], nums[1]));
}
for(let i=2; i<nums.length; i++){
robs.push( Math.max(robs[Math.max(i-1)], robs[Math.max(i-2)]+nums[i]) );
}
return robs[robs.length-1];
}
if(nums.length <= 2){
return Math.max(...nums)
}
return Math.max(doRob(nums.slice(0, nums.length-1)), doRob(nums.slice(1, nums.length)));
};