剑指 Offer II 090. 环形房屋偷盗

130 阅读1分钟

剑指 Offer II 090. 环形房屋偷盗

同这道题

213. 打家劫舍 II

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)));
};