[leetcode]213. House Robber II -- JavaScript 代码

来源:互联网 发布:淘宝漏洞最新 编辑:程序博客网 时间:2024/06/05 12:50

版本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];    }};
0 0