House Robber II LeetCode solution in JavaScript
1var rob = function (nums) {2let dp = [];3dp[0] = [0, 0];4dp[1] = [nums[0], 0];56for (let i = 2; i <= nums.length; i++) {7let val = nums[i - 1];89let rob = dp[i - 2][0] + val;10let dont = dp[i - 1][0];11let noFirst = dp[i - 2][1] + val;1213let best = rob >= dont ? rob : dont;1415if (dp[i - 1][1] > noFirst) noFirst = dp[i - 1][1];1617if (i != nums.length) {18dp[i] = [best, noFirst];19} else {20dp[i] = [dont, noFirst];21}22}23return dp[nums.length][0] >= dp[nums.length][1]24? dp[nums.length][0]25: dp[nums.length][1];26};