x 213. House Robber II

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