同这道题
rob1的方法时89题的方法,在这里利用一下 90题只是房子是环形的,所以将这种情况拆分为两种选择,就可以转化为89题的问题啦
var rob1 = function(nums) {
var n = nums.length
var arr = new Array(n).fill(-1)
return f(0)
function f(i){
if (i >= n) return 0
if (arr[i] != -1) return arr[i]
arr[i] = Math.max(f(i + 1), f(i + 2) + nums[i])
return arr[i]
}
};
var rob = function (arr) {
var n = arr.length;
if (n == 1) return arr[0];
if (n == 2) return Math.max(arr[1], arr[0]);
return Math.max(rob1(arr.slice(0, n - 2 + 1)), rob1(arr.slice(1, n - 1 + 1)));
};