版本1:
/**
* @param {number[]} nums
* @return {number}
*/
var rob = function(nums) { // 递推公式 fn = max(n+f(n-2),f(n-1)) 思路:把每个房间都当作第一个房间走一轮,选出最大值
var max = 0;
var len = nums.length;
if(len === 0){
return 0;
}
if(len === 1){
return nums[0];
}
for(var i=0;i<len;i++){
array = [];
array[0] = nums[i];
array[1] = Math.max(nums[i+1],nums[i]);
for(var j=2;j<len;j++){
index = (i+j)%len;
array[j] = Math.max(nums[index]+array[j-2],array[j-1]);
}
if(array[len-2]>max){
max = array[len-2];
}
}
return max;
};
版本2:
/**
* @param {number[]} nums
* @return {number}
*/
var rob = function(nums) { // 递推公式 fn = max(n+f(n-2),f(n-1)) 思路:把每个房间都当作第一个房间走一轮,选出最大值
var len = nums.length;
if(len === 0){
return 0;
}
if(len === 1){
return nums[0];
}
return Math.max(easyrob(nums.slice(1)),easyrob(nums.slice(0,len-1)));
function easyrob(a){
var l = a.length;
if(l === 1){
return a[0];
}
array=[];
array[0] = a[0];
array[1] = Math.max(a[1],a[0]);
for(var m=2;m<l;m++){
array[m] = Math.max(a[m]+array[m-2],array[m-1]);
}
return array[l-1];
}
};