x 213. House Robber II
time: O(N)
space: O(1)
/**
* @param {number[]} nums
* @return {number}
*/
var rob = function (nums) {
if (nums.length === 1) return nums[0];
if (nums.length < 3) return Math.max(nums[0], nums[1]);
let answer = -Infinity;
let first = Math.max(nums[0], 0);
let second = Math.max(nums[1], first);
for (let i = 2; i < nums.length - 1; i++) {
const curr = nums[i];
const temp = second;
second = Math.max(second, first + curr);
second = Math.max(second, curr);
first = temp;
}
answer = Math.max(second, answer);
first = 0
second = Math.max(nums[1], first);
for (let i = 2; i < nums.length; i++) {
const curr = nums[i];
const temp = second;
second = Math.max(second, first + curr);
second = Math.max(second, curr);
first = temp;
}
answer = Math.max(second, answer);
return answer;
};
time: O(N)
space: O(N)
Last updated