https://leetcode.com/problems/house-robber/
Time complexity: O(N)
Space complexity: O(N)
/**
* @param {number[]} nums
* @return {number}
*/
var rob = function(nums) {
const N = nums.length;
if(N === 1){
return nums[0];
}
if(N===2){
return Math.max(nums[0], nums[1]);
}
if(N===3){
return Math.max(nums[0]+nums[2], nums[1]);
}
const sum = new Array(N);
sum[0] = nums[0];
sum[1] = nums[1];
sum[2] = nums[0]+nums[2];
for(let i = 3; i < N; i++){
sum[i] = nums[i] + Math.max(sum[i-2], sum[i-3]);
}
return Math.max(sum.pop(), sum.pop());
};